Странная проблема с преобразованием между GDI + в GDI: Bitmap и HBitmap - PullRequest
1 голос
/ 10 декабря 2008

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

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

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

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

1 Ответ

2 голосов
/ 19 марта 2009

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