我正在提到一个较旧的问题,即使用GDI +进行颜色混合
在Windows窗体中使用GDI +,我希望能够使用笔绘制并根据目标像素颜色混合颜色。
例如,如果我画一条线并且它经过黑色像素,我希望它是一种较浅的颜色(例如白色),以便它可见。当同一条线经过白色像素时,它应该是较暗的颜色(例如黑色),以便它仍然清晰可见。
答案说使用颜色矩阵进行转换 所以我开始实施它.. 我的图像以原始数据格式存在于rgb48
中 Gdiplus::Bitmap image(input.width,input.height,input.width*6,PixelFormat48bppRGB,(unsigned char*)rgb48);
Gdiplus::Image *images= image.GetThumbnailImage(input.width,input.height);
Gdiplus::TextureBrush brush(images);
Gdiplus::Pen pen(&brush);
Gdiplus::ColorMatrix matrix={
-1.0f,0.0f,0.0f,0.0f,0.0f,
0.0f,-1.0f,0.0f,0.0f,0.0f,
0.0f,0.0f,-1.0f,0.0f,0.0f,
0.0f,0.0f,0.0f,1.0f,0.0f,
1.0f,1.0f,1.0f,0.0f,1.0f,
};
Gdiplus::Graphics gfx(&image1);
Gdiplus::ImageAttributes imageAttr;
imageAttr.SetColorMatrix(&matrix);
gfx.DrawImage(images,Gdiplus::Rect(0,0,input.width,input.height),0,0,1024,1024,Gdiplus::UnitPixel,&imageAttr);
我没有得到我期望的东西。可以帮助我找到我正在做的错误。
答案 0 :(得分:0)
您可以使用颜色的alpha分量来指定透明度,以便可以组合颜色。但是,如果您希望组合不是Alpha混合,则必须自己绘制像素。您可以先绘制透明位图,然后逐像素地将其渲染到目标位置。