我希望黄色后面的内容能够显示出来。

编辑1:但是,如果我要绘制“白色”,我希望标记颜色保持其纯黄色。

编辑2:@Kevin的答案可能是正确的,即使没有编写代码,我也将其标记为正确。在我的代码中,我使用Color.FromArgb解决@Guffa的答案。

编辑3:我发布了性能不错的代码。是的,减去蓝色是基本概念,但是您不能使用高级API来做到这一点,并且SetPixel太慢了。具有良好性能的解决方案使用Bitmap.LockBits,UnlockBits。

最佳答案

荧光笔是颜料,因此本质上是减色法-您想将白色变成黄色,而不是黑色变成黄色。我不知道.NET,但是您想要的是非默认的“混合模式”,特别是减法。具体来说,将混合模式设置为减色,然后将颜色设置为纯蓝色(要减去的颜色,保留黄色)。黑色不会留下,因为没有要减去的蓝色,而白色会变成黄色。

不幸的是,许多现代的绘图界面都忽略了alpha以外的混合模式,看起来这可能是其中之一。如果可以访问位图,则可以自己实现-获取每个像素值并将蓝色分量设置为零。或者,如果您要突出显示的区域很复杂,则:复制图像,在副本中突出显示的区域上绘制黑色,然后将原始图像中的红色和绿色 channel 与副本中的蓝色 channel 合并到最终图像中结果图像。

关于.net - 使用System.Drawing,如何绘制模仿黄色突出显示标记效果的内容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2257762/

10-13 09:02