在.net控件上绘制文本,背景为负色 – 混合

我想在其中心绘制一个百分比的进度条,但我希望文本 背景具有 (对比)颜色。

因此,在ProgressBar的填充部分上方的文本部分将是白色的,而未填充部分的部分将是白色的。

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

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

在这个应用程序中,两次绘制文本的性能影响可以忽略不计,但是我感兴趣的是,如果有一些简单的方法只用两个步骤(比如让进度条以某种方式反转已绘制的文本)进行混合

你做的很好。 像SetROP2()这样的旧技巧不再适用于文本获得消除锯齿,特别是使用ClearType渲染。 使用错误的颜色获取锯齿像素非常明显。 因此,Graphics.CompositingMode不再支持该效果。

您可以使用XOR计算负(反转)颜色;

 Public Function InvertColor(color As Long) As Long Return (color Xor &HFFFFFF) End Function