我正在與Scintilla(不是ScintillaNET),我試圖設置自動完成列表中使用的圖像。 Scintilla需要RGBA格式的一串字節/像素。RGBA圖像格式(由Scintilla使用)
Scintilla的的這個RGBA格式的描述:(Quote from documentation)
的RGBA格式允許半透明針對每個 像素的α值。它比XPM更簡單,功能更強大。
該數據是一個4字節的像素值序列,以頂部線的像素 開頭,最左邊的像素在前,然後繼續爲後續行的像素爲 。對於 對齊原因,行之間沒有差距。
每個像素按順序包含一個紅色字節,一個綠色字節,一個藍色字節和一個alpha字節。顏色字節不是由Alpha值預先乘以 。也就是說,全紅像素是25%不透明的將是 [FF,00,00,3F]
我希望我誤解格式如上所述,文檔也不是很清楚。
我的轉換方法:
我寫了這個功能,一個PNG轉換成這串字節:
public static string ConvertFromPNG(Bitmap PNG)
{
string rgba = "";
int pixWidth = PNG.Width;
int pixHeight = PNG.Height;
for (var y = 0; y < pixHeight; y++)
{
for (var x = 0; x < pixWidth; x++)
{
Color pix = PNG.GetPixel(x, y);
rgba += pix.R.ToString("X2") + pix.G.ToString("X2") + pix.B.ToString("X2") + pix.A.ToString("X2");
}
}
return rgba;
}
產生的圖像:
但Scintilla的只是展示作爲灰盒的圖像:
。
有問題的圖片是Microsoft's Babel images之一的副本:。
我知道字節集是正確的,因爲有趣的是,如果我行格式化和縮小對他們,我能看到圖像的輪廓:
字節生成:
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009F000000EC0000001B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815B0000DF9B0000F8000000B40000002F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001B0000007F4E0000FDC80000FFFF0000FF720000FF1D0000B50000003E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001613000085350000FFDE0000FFFF0000FFFF0000FFFF0000FF750000FF230000C4000000240000000000000000000000000000000000000000000000000000000000000000000000000000000000000085400000EADB0000FFF90000FFFF0000FFFF0000FFFF0000FFF60000FFA70000F5000000DA00000000000000000000000000000000000000000000000000000000000000000000000000000091810000EACA0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFBB0000FF460000FF000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000FF7E0000FFE80000FFFF0000FFFF0000FFFF0000FFFB0000FFB30000FF460000FF0C0000FF000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000FF000000FF660000FFFF0000FFFF0000FFFF0000FFC70000FF0D0000FF590000FF7A0000FF000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000FF8C0000FF7D0000FF2E0000FFFF0000FFBB0000FF1C0000FF510000FFB40000FF7B0000FF000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000FFE20000FFE40000FF410000FF8B0000FF510000FF350000FFB60000FF8F0000FF3A0000EA00000091000000000000000000000000000000000000000000000000000000000000000000000000000000DA910000F5F30000FFFF0000FF0C0000FF270000FFC10000FF930000FF220000EA0000008500000000000000000000000000000000000000000000000000000000000000000000000000000000000000241D0000C4870000FFFF0000FF270000FF420000FF9E0000FF230000FF090000860000001600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003E2D0000B5610000FF120000FF1C0000FF370000FD0000007F0000001B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002E000000B4000000F8000000DF00000081000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001B000000EC0000009F0000000000000000000000000000000000000000
謝謝,它現在工作。該文件說該方法需要一串字節,這就是我困惑的東西:) – Drahcir 2013-03-12 16:30:53