【问题标题】:Draw text on a .net Control with negative color of the background - blend在 .net 控件上使用背景的负色绘制文本 - 混合
【发布时间】:2011-02-04 17:04:09
【问题描述】:

我想在其中心绘制一个带有百分比的进度条, 但我希望 text 具有 backgroundnegative(对比色)。

因此,ProgressBar 已填充部分上方的文本部分为白色,未填充部分上方的部分为白色。

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

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

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

【问题讨论】:

  • 如何剪切白色文本?
  • @farukdgn graphicsObj.Clip = new Region(rectangle); - 这会将Graphics 对象中的绘图限制在您设置的Rectangle 区域内。

标签: c# .net winforms graphics


【解决方案1】:

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

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

【讨论】:

  • 没问题,我知道底色和反色,但我想问的是如何在图形中进行“异或”混合
【解决方案2】:

你正在做的很好。像 SetROP2() 这样的旧技巧不再适用于消除锯齿的文本,尤其是使用 ClearType 渲染。使用错误颜色获取混叠像素非常明显。 Graphics.CompositingMode 相应地不再支持效果。

【讨论】:

    猜你喜欢
    • 2021-04-10
    • 2018-10-10
    • 1970-01-01
    • 2015-08-07
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 2011-07-27
    相关资源
    最近更新 更多