GDI +将图像的透明部分的颜色重置为黑色

时间:2019-02-14 16:17:55

标签: gdi+

我该如何使用GDI +绘制特定的透明颜色?

我尝试了以下代码:

m_image = new Gdiplus::Bitmap( img_w, img_h );
m_graphic = Gdiplus::Graphics::FromImage( m_image );

Gdiplus::Color c( 0, 255, 0, 0 ); // ARGB = 0x00FF0000

m_graphic->Clear( c );

m_image->GetPixel( 0, 0, &c ); //ARGB = 0x00000000 ?!

图像的透明部分的颜色始终为黑色。我该如何更改?

1 个答案:

答案 0 :(得分:2)

Graphics :: Clear方法将Graphics对象清除为指定的颜色。 我已经尝试过您的代码:

Image m_image(L"C:\\Users\\strives\\Desktop\\apple.jpg");
Graphics *m_graphic = Graphics::FromImage(&m_image);
Gdiplus::Color c(0, 255, 0, 0); // ARGB = 0x00FF0000
m_graphic->Clear(c);
graphics.DrawImage(&m_image, 30, 20);
delete m_graphic;

最后一张照片是这样的。

enter image description here

我认为问题很明显。如果使用清除功能并将颜色设置为(0,255,0,0)(默认为黑色),则打印区域必须为黑色,并且下面的GetPixel函数捕获的像素的颜色必须为黑色。