C# 在.net控件上绘制背景为负颜色的文本-混合

C# 在.net控件上绘制背景为负颜色的文本-混合,c#,.net,winforms,graphics,C#,.net,Winforms,Graphics,我想画一个进度条,中间有百分比, 但是我希望文本具有背景的负(对比)颜色 因此,ProgressBar中填充部分上方的文本部分将为白色,而未填充部分上方的文本部分将为白色 我可以通过“作弊”来做到这一点 先画文本的黑色部分 绘制进度矩形(它将覆盖要隐藏的零件) 仅在进度矩形上绘制白色文本(剪切它) 在这个应用程序中,两次绘制文本对性能的影响可以忽略不计,但我感兴趣的是,是否有一些简单的方法可以通过混合只分两步完成(比如让进度条以某种方式反转已绘制的文本),您可以使用XOR来计算负(反转)颜色

我想画一个进度条,中间有百分比, 但是我希望文本具有背景的(对比)颜色

因此,ProgressBar中填充部分上方的文本部分将为白色,而未填充部分上方的文本部分将为白色

我可以通过“作弊”来做到这一点

  • 先画文本的黑色部分
  • 绘制进度矩形(它将覆盖要隐藏的零件)
  • 仅在进度矩形上绘制白色文本(剪切它)

在这个应用程序中,两次绘制文本对性能的影响可以忽略不计,但我感兴趣的是,是否有一些简单的方法可以通过混合

只分两步完成(比如让进度条以某种方式反转已绘制的文本),您可以使用XOR来计算负(反转)颜色


你现在做的很好。像SetROP2()这样的老把戏不再适用于文本的抗锯齿处理,尤其是在ClearType渲染中。使用错误的颜色获取混叠像素非常明显。因此Graphics.CompositingMode不再支持效果。

这没问题,我知道底色和反转色,但我想问的是如何在GraphicsShow中进行“XOR”混合。是否剪辑白色文本?@farukdgn
graphicsObj.clip=新区域(矩形)-这将
图形
对象中的绘图限制在所设置的
矩形
区域内。
Public Function InvertColor(color As Long) As Long
    Return (color Xor &HFFFFFF)
End Function