2008-12-10 100 views
1

我想將gdi +位圖轉換爲gdi對象HBitmap。有關GDI +到GDI之間轉換的奇怪問題:位圖和HBitmap

我使用下面的方法:

Bitmap* img = new Bitmap(XXX); 
      // lots of codes... 
    HBITMAP temp; 
    Color color; 
    img->GetHBITMAP(color, &temp); 

在img對象上的對話框繪製。 當這部分方法被調用時,會發生奇怪的事情! 在窗口中顯示的img改變了! 它變得更清晰或更清晰。 我的問題是會發生什麼?

回答

2

位圖像素格式可能是原因。你是否在Bitmap構造函數中明確指定它?

Gdiplus::Bitmap bmp(WIDTH, HEIGHT, PixelFormat24bppRGB); 

請確保您使用的所有像素格式都相同。

另一個原因可能是代碼中Gdiplus::Graphics插值模式的差異。該屬性確定如何調整圖像大小,如何繪製線條等。

m_pViewPortImage = new Gdiplus::Bitmap(
    observedWidth, 
    observedHeight, 
    PixelFormat24bppRGB 
); 

Gdiplus::Graphics gr(m_pViewPortImage); 
gr.SetInterpolationMode(Gdiplus::InterpolationModeHighQualityBicubic);