C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: ImageListにAddした画像のサイズが変わってしまう


(過去ログ 70 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■40716 / inTopicNo.1)  ImageListにAddした画像のサイズが変わってしまう
  
□投稿者/ simano (6回)-(2009/09/01(Tue) 22:17:05)

分類:[C#] 

こんにちは。

背景が透過に設定されたPNG画像を、ImageListに格納しておき、
必要な際に取り出して元サイズで描画したいと考えています。

しかし、以下のようにImageListに画像を格納してから画像描画を行うと、
画像サイズが元のサイズ(16 * 16pix)より微妙に大きくなってしまいます。
----------
ImageList imageList = new System.Windows.Forms.ImageList();
imageList.TransparentColor = Color.Transparent;
imageList.ImageSize = new Size(16, 16);
imageList.Images.Add(Properties.Resources.myicon);
pictureBox1.Image = imageList.Images[0];
----------

念のため、以下のようなソースで画像を描画すると、
元サイズで描画することができます。
----------
pictureBox1.Image = Properties.Resources.myicon;
----------

おそらく、ImageListから画像を取り出した際に、背景の透過色分だけ、
画像が広がっているのではないかと思います。

透過色をMagentaなどの指定しやすい色に変えればよいのかと思うのですが、
画像の縁どりが半透明になっているので、フォトショップを使っても背景色が
変更しづらい状況にあります。
また、プログラムの都合上、ImageListは利用したいと考えています。

上記のような場合にも、ImageListからきれいに画像を取得するような
方法はありませんでしょうか。
よろしくお願いします。
引用返信 編集キー/
■40770 / inTopicNo.2)  Re[1]: ImageListにAddした画像のサイズが変わってしまう
□投稿者/ simano (7回)-(2009/09/02(Wed) 15:11:15)
自己解決できました。

ImageListのColorDepth の設定を、既定のDepth8Bitから、最大のDepth32Bitに変更したところ、かなり元の画像に近い状態でImageを取得することができました。
(ただし、元画像が円形などの場合は、やはり外縁がギザギザに変形してしまうなどするようです。)

特に画像操作が必要ない場合は、ImageListを使うよりも、ArrayListなどでImageを保持したほうが良いかもしれないと思いました…。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -