2011-08-04 50 views
9

我與GDI +工作,我創建一個新的位圖是這樣的:myBitmap.RawFormat與任何已知的ImageFormat不同?

var bmp = new Bitmap(width, height); 

現在,當我看到它的RawFormat.Guid我看到它是從所有預定義ImageFormats不同(雖然我希望它是JPEG )。

ImageFormat.Jpeg.Guid 
    {b96b3cae-0728-11d3-9d7b-0000f81ef32e} 
format.Guid 
    {b96b3caa-0728-11d3-9d7b-0000f81ef32e} 

有趣的部分是,你可以看到它們是相同的,只有一個字符,使我更加困惑。

任何想法爲什麼?代碼的哪些部分決定了我創建的位圖的RawFormat是什麼?我們如何確保它是一個有效的ImageFormat?

謝謝。

回答

18

從Windows SDK,<gdiplusimaging.h>頭文件:

DEFINE_GUID(ImageFormatUndefined, 0xb96b3ca9,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 
DEFINE_GUID(ImageFormatMemoryBMP, 0xb96b3caa,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 
DEFINE_GUID(ImageFormatBMP, 0xb96b3cab,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 
DEFINE_GUID(ImageFormatEMF, 0xb96b3cac,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 
DEFINE_GUID(ImageFormatWMF, 0xb96b3cad,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 
DEFINE_GUID(ImageFormatJPEG, 0xb96b3cae,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 
DEFINE_GUID(ImageFormatPNG, 0xb96b3caf,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 
DEFINE_GUID(ImageFormatGIF, 0xb96b3cb0,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 
DEFINE_GUID(ImageFormatTIFF, 0xb96b3cb1,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 
DEFINE_GUID(ImageFormatEXIF, 0xb96b3cb2,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 
DEFINE_GUID(ImageFormatIcon, 0xb96b3cb5,0x0728,0x11d3,0x9d,0x7b,0x00,0x00,0xf8,0x1e,0xf3,0x2e); 

「內存BMP」,比較合適的。是的,微軟經常手動使用GUID。淘氣。

+0

哇!真?!是否很難爲他們製作新的Guid?! :P –

+2

呃,當然沒有。當你正在調試時很不錯。唯一的困擾是每個人現在都會對圖像格式b3和b4感到好奇。 –

+3

@Hans - (舊Q,但仍然) - 3和4是photoCD和flashPIX,它們在集合中,但沒有外部化,所以猜測M $改變了他們關於支持它們的想法:[來自ImageFormat.cs類] private static ImageFormat photoCD = new ImageFormat(new Guid(「{b96b3cb3-0728-11d3-9d7b-0000f81ef32e}」)); private static ImageFormat flashPIX = new ImageFormat(new Guid(「{b96b3cb4-0728-11d3-9d7b-0000f81ef32e}」)); – Wolf5370

相關問題