2012-04-29 15 views
6

TreeViewListViewにはImageListが使用されています。最初に画質を32ビットに設定してから、半透明の画像を追加しました。品質は問題なく見えますが、アプリケーションのコーディング、コンパイル、実行の2〜3分後に品質が悪くなります。ImageList:32ビット画像が品質を失う

参照のスクリーンショット: enter image description here

使用されるプロパティ

ColorDepth: Depth32Bit 
ImageSize: 16; 16 
TransparentColor: Transparent 

半透明のが、完全に透明ではありませんでしたピクセルの背後にある黒画素があります。

すべての画像を元に戻すと元の画質に戻りますが、数分後にはスクリーンショットの右側に表示されます。

+0

どのバージョンのVisual Studio?実行時に画像リストを読み込むとうまくいくと思います。おそらく、デザイン時に画像リストの状態を保存/ロードするVSコードのバグです。 –

+0

それはVS2010究極です。私はまた、実行時にそれらを読み込むことについて最初に考えましたが、それは*すべきではありません。他のアイデア? – bytecode77

+0

リソースから実行時にロードすることは、まさに私がやることです。次に、フォントのスケーリングと一致するサイズを選択できます。 –

答えて

8

画像がImageStream(VS Designerのデフォルト動作)として保存されると、アルファチャンネルのデータが失われるようです。 Designerを使用して画像をImageListに設定するのをやめてもよければ、半透明の画像を最大でColorDepth.Depth32Bitにすることができます。 非常に不便ですが動作します。

イメージをResources.resxファイルに配置して、コード内の適切な場所に追加することができます。あなたUserControl/Formのコンストラクタでは例えば、次のようなコードでInitializeComponent()への呼び出し後:この情報は応答マークの回答にコメントで提供されています

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

は(私はそれは次のようになりますので、答えとしてこれを追加しました別の利用可能なオプションを見逃しにくい)

関連する問題