Colors 与GDI+的颜色混合;

Colors 与GDI+的颜色混合;,colors,gdi+,gdi,Colors,Gdi+,Gdi,我指的是一个老问题,即颜色与GDI混合+ 使用GDI+和Windows窗体,我希望能够使用钢笔绘制,并根据目标像素颜色混合颜色 例如,如果我画一条线,它经过黑色像素,我希望它是一个较浅的颜色(例如白色),这样它是可见的。当同一条线经过白色像素时,它应该是较暗的颜色(例如黑色),这样它仍然清晰可见 答案是使用颜色矩阵进行变换 所以我开始实施它。。 我的图像以rgb48中的原始数据格式显示 Gdiplus::Bitmap image(input.width,input.height,inpu

我指的是一个老问题,即颜色与GDI混合+

使用GDI+和Windows窗体,我希望能够使用钢笔绘制,并根据目标像素颜色混合颜色

例如,如果我画一条线,它经过黑色像素,我希望它是一个较浅的颜色(例如白色),这样它是可见的。当同一条线经过白色像素时,它应该是较暗的颜色(例如黑色),这样它仍然清晰可见

答案是使用颜色矩阵进行变换 所以我开始实施它。。 我的图像以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);

我没有得到我所期望的。有人能帮我找出我所犯的错误吗。

你可以使用颜色的alpha分量来指定透明度,以便可以组合颜色。但是,如果希望组合不是alpha混合,则必须自己绘制像素。您可以先绘制一个透明位图,然后逐像素将其渲染到目标上