1

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

我正在使用以下方法:

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

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

4

1 回答 1

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);
于 2009-03-19T07:10:05.000 回答