C#で、pngの透明の色処理の基本について教えてください。
Windows7 Pro, Visual Studio 2013 Expressの組み合わせで、Formアプリケーションを作っています。このなかで、周囲(角)が透明であるアイコン風のpngファイルの画像の透明部分のRGBを処理しようと考えています。
Image.image = new Bitmap(pngpath);
Bitmap bitmap = (Bitmap)image;
string line = "";
for (int width = 0; width < bitmap.Width; width++)
line += colorRGB(bitmap.GetPixel(width, 10))+ "\r\n";
private string colorRGB(Color color) {
string[] cells = color.ToString().Replace("Color", "").Replace("[", "").Replace("]", "").Split(',');
return cells[1].Trim() + "," + cells[2].Trim() + "," + cells[3].Trim()+ "\t";
}
これで取得したところ、
R=33,G=40,B=0
R=33,G=40,B=0
R=33,G=40,B=0
R=33,G=40,B=0
R=33,G=40,B=0
R=36,G=43,B=0
R=17,G=30,B=18
R=38,G=48,B=50
R=39,G=50,B=52
R=39,G=50,B=52
R=39,G=50,B=52
R=30,G=41,B=43
というようなデータを取得できました。
ところが実際の画像を拡大して、colorpickerで見たところ、
Pixcel(0, 10)のRGBは、
R=99,G=104,B=76
でなければならず、1ピクセル分飛ばして作業しているようです。
Q1) なぜ1pixcelめを飛ばしてしまうのでしょう?
角のRGBをcolorpickerで見ると、
R=255, G=255, B=255
でした。
Q2) R=255, G=255, B=255は白だと思うのですが、白と透明はC#ではどう区別すればよいのでしょう。
以上、よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー