Странная проблема с преобразованием между GDI+ в GDI: Bitmap и HBitmap

Я хочу конвертировать gdi+ Bitmap в объект gdi HBitmap.

Я использую следующий метод:

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

объект img рисует в диалоге. когда вызывается эта часть метода, происходит странная вещь! отображение img в окне изменилось! Это стало немного яснее или острее. Мой вопрос: что происходит?

1 ответ

Причиной может быть формат растрового пикселя. Вы указываете это явно в конструкторе 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);
Другие вопросы по тегам