关于GDI +到GDI之间转换的奇怪问题:Bitmap和HBitmap

时间:2008-12-10 02:25:11

标签: gdi+ bitmap gdi hbitmap

我想将gdi + Bitmap转换为gdi对象HBitmap。

我使用以下方法:

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

img对象正在绘制一个对话框。 当调用这部分方法时,会发生奇怪的事情! 窗口中显示的img改变了! 它变得更清晰或更清晰。 我的问题是会发生什么?

1 个答案:

答案 0 :(得分: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);