【问题标题】:GDI+: How to replace black pixels with red pixels?GDI+:如何用红色像素替换黑色像素?
【发布时间】:2015-04-26 15:19:33
【问题描述】:

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

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);

但它使整个位图变红。

【问题讨论】:

    标签: c++ bitmap gdi+


    【解决方案1】:

    不要使用矩阵来执行这种转换。您的矩阵将始终输出以下向量:
    [1.0 0.0 0.0 当前Alpha 1.0]
    这就是为什么你有一个红色的图像。
    访问https://msdn.microsoft.com/en-us/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);
    

    【讨论】:

    • 亲爱的妈妈,我已经尝试了几天,你用几行代码就解决了!
    猜你喜欢
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 2018-02-22
    • 2022-12-19
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    相关资源
    最近更新 更多