ben

OMÜ , Bilgisayar Mühendisliği, 13'

24 Ocak 2013 Perşembe

Projeye resim-ses dosyası gömmek


  Proje yazımında coğu zaman dısardan projeye dahil edebileceğimiz dosyalar çıkabilir. Kendi bilgisayarımızda projemizi geliştirirken örneğin butonun tıklanmasına ses eklemek yada herhangi bir resimi kullanmak istediğimizde bu dosyaların yolunu vererek kullanabiliriz. Fakat aynı projeyi başka bilgisayarda çalıstırmaya çalıstığımızda  bu resim ve ses dosyalarını da o bilgisayara taşıyıp, tanımladığımız yolları değiştirmemiz gerekmekte. Böyle yapmak yerine projemize bu dosyaları gömerek istediğimiz bilgisayarda sorunsuz bir şekilde çalıstırabiliriz.

  İlk öncelikle projemizin properties kısmında Resources.resx kısmı yoksa projemize sağ tıklayarak Properties->Resources 'a gelerek orada bu dosyayı oluşturalım. Oluşan Resources.resx dosyamıza tıkladığımızda dosyaları yükleyeceğimiz alan karşımıza gelecek. Burada AddResources diyerek istediğimiz dosyayı yükleyelim. Daha sonra projemizde oluşan Resources Klasöründe yuklediğimiz dosyaya sağ tıklayarak properties'ine girelim. Burada Building Action kısmının Embedded Resource olması gerekli eğer değilse bu şekilde değiştirilmesi gerekir. İstediğimiz dosyalarımızı projeye gömme işlemi tamamlandı. Peki gömmeyi başardığımız bu dosayalara proje içinden nasıl erişeceğiz bunun için aşagıdaki gibi bir fonksiyon işimizi görür sanırım.

public static StreamReader Files(string FileName) 
{ 
   Assembly assembly = Assembly.GetExecutingAssembly();
   string[] resourceNmes = assembly.GetManifestResourceNames();  
   StreamReader reader = null;  
   foreach (string names in resourceNmes)  
   {
     if (names.Contains(FileName))
     {
      reader = new StreamReader(assembly.GetManifestResourceStream(names));    
     }  
   }
return reader;

}


    Fonksiyonumuz da assembly değişkeni projemize gömülü olan dosya/dosyalarımızı tutar. Bu dosyalara erişmek için dosya adlarını listeleyip , fonksiyonumuza gelen dosya adı ile aynı olan dosyayı StreamReader türünde okuyarak geri döndürür.

Hiç yorum yok: