1

gdi+ Bitmap を gdi オブジェクト HBitmap に変換したい。

私は次の方法を使用しています:

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

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 に答える