2008-12-10 44 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);