views:

659

answers:

1

I want to convert gdi+ Bitmap into gdi object HBitmap.

I am using the following method:

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

the img object is drawing on a dialog. when this part of method is called, strange thing happens! the img displaying in the window changed! It become a bit clearer or sharper. My question is what happens?

+1  A: 

The bitmap pixel format may be the reason. Do you specify it explicitly in the Bitmap constructor?

Gdiplus::Bitmap bmp(WIDTH, HEIGHT, PixelFormat24bppRGB);

Try making sure that all the pixel formats you use are the same.

Another reason may be the differences in Gdiplus::Graphics interpolation modes in your code. That attribute determines how the images are resized, how the lines are drawn, etc.

m_pViewPortImage = new Gdiplus::Bitmap(
    observedWidth,
    observedHeight,
    PixelFormat24bppRGB
);

Gdiplus::Graphics gr(m_pViewPortImage);
gr.SetInterpolationMode(Gdiplus::InterpolationModeHighQualityBicubic);
Ivan Krechetov