繁体   English   中英

GDI +:如何用红色像素替换黑色像素?

[英]GDI+: How to replace black pixels with red pixels?

我有一个黑白图像,想用红色像素替换黑色像素。 我试过了

Gdiplus::Graphics* g = Gdiplus::Graphics::FromImage(filename);

Gdiplus::ImageAttributes ia;

Gdiplus::ColorMatrix m = { 
    0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
    0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
    0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
    0.0f, 0.0f, 0.0f, 1.0f, 0.0f,
    1.0f, 0.0f, 0.0f, 0.0f, 1.0f
};

ia.SetColorMatrix(&m);

g->DrawImage(org, r, 0, 0, org->GetWidth(), org->GetHeight(), Gdiplus::UnitPixel, &ia);

但这使整个位图变成红色。

不要使用矩阵执行此转换。 您的矩阵将始终输出以下向量:
[1.0 0.0 0.0 currentAlpha 1.0]
这就是为什么您有红色图像。
访问https://msdn.microsoft.com/zh-cn/library/ms533875%28v=vs.85%29.aspx
改用这个

ImageAttributes ia;

ColorMap blackToRed;

blackToRed.oldColor = Color(255, 0, 0, 0);  // black

blackToRed.newColor = Color(255, 255, 0, 0);// red

ia.SetRemapTable(1, &blackToRed);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM