2012-04-29 11 views
6

TreeView ve ListView için ImageList kullanıyorum. İlk önce görüntü kalitesini 32 bit olarak ayarladıktan sonra yarı saydam olan görüntüleri ekledim. Kalitesi iyi görünüyor, ancak uygulamayı kodlamak, derlemek ve yürütmek için birkaç dakika sonra kalite kötü görünüyor.ImageList: 32-bit Görüntüler kalitesini kaybediyor

bakınız ekran görüntüsü: enter image description here

kullanılmış özellikler

ColorDepth: Depth32Bit 
ImageSize: 16; 16 
TransparentColor: Transparent 

yarı şeffaf ama tamamen şeffaf değildi piksel arkasında siyah pikseller vardır.

Tüm görüntüleri yeniden eklemek orijinal kalitesini geri yükler, ancak birkaç dakika sonra ekranın sağ tarafında görünür.

+0

Visual Studio'nun hangi sürümü? Eminim görüntü listesini çalışma zamanında yüklerseniz iyi çalışır. Muhtemelen VS kodunda görüntü listesindeki durumları depolayan/yükleyen bir hata. –

+0

VS2010 Ultimate. Aynı zamanda onları çalışma zamanında yüklemeyi düşündüm, ama bu * olması gereken bir şey değil. Başka fikirlerin var mı? – bytecode77

+0

Çalışma zamanında bir kaynaktan yükleme yapmak, tam olarak ne yapardım. Sonra yazı tipi ölçeklendirmesiyle eşleşen bir boyut seçebilirim. –

cevap

8

Resimler ImageStream (VS Designer'ın varsayılan davranışı) olarak depolandığında alfa kanalı verileri kayboluyor gibi görünüyor.ImageList görüntülerini ayarlamak için Tasarımcısı'nı kullanmayı bırakmanız uygunsa, ColorDepth.Depth32Bit'a kadar yarı saydam görüntüleri kullanabilirsiniz. Çok sakıncalı ama işe yarıyor.

Görüntülerinizi Resources.resx dosyasına koyabilirsiniz ve bunları uygun bir yere kod olarak ekleyebilirsiniz. Böyle koduna göre InitializeComponent() çağrısının sonra sizin UserControl/Form kurucuları içindedir Örneğin,: olurdu böylece

_imageList.Images.Add(Resources.Image32); 
    _imageList.Images.SetKeyName(0, "Image32"); 
    _myButton.Image = 0; 

(Bu bilgi yanıtı işaretlenmiş cevaba yorumların mevcuttur, ben cevap olarak bu ekledik Başka bir kullanılabilir seçeneği kaçırmak zor)