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

Axa*_*dax 5 .net c# graphics winforms

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

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

我只能通过"作弊"来做到这一点

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

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

Han*_*ant 4

你正在做的事情很好。像 SetROP2() 这样的老技巧在文本抗锯齿时不再起作用,尤其是在 ClearType 渲染时。颜色错误的混叠像素非常明显。因此,Graphics.CompositingMode 不再支持这些效果。