代码之家  ›  专栏  ›  技术社区  ›  Axarydax

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

  •  5
  • Axarydax  · 技术社区  · 15 年前

    我想画一个以百分比为中心的进度条, 但是我想要 文本 拥有 消极的 (对比)颜色 背景 .

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

    我可以通过“欺骗”来做到这一点

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

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

    2 回复  |  直到 15 年前
        1
  •  4
  •   Hans Passant    15 年前

    你做的很好。像setrop2()这样的老技巧不再适用于文本消除混叠,特别是对于ClearType渲染。获取具有错误颜色的混叠像素非常明显。相应地,graphics.compositingmode不再支持效果。

        2
  •  0
  •   Rhapsody    15 年前

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

    Public Function InvertColor(color As Long) As Long
        Return (color Xor &HFFFFFF)
    End Function
    
    推荐文章