c# - 在具有负色背景的 .net 控件上绘制文本 - 混合

标签 c# .net winforms graphics

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

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

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

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

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

最佳答案

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

关于c# - 在具有负色背景的 .net 控件上绘制文本 - 混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2583263/

相关文章:

c# - 标签上的 "Invoke or BeginInvoke cannot be called on a control until"

c# - 如何通过 C# 读取 PowerShell 退出代码

c# - 为什么我不能将表单标签添加到我的标签列表中?

asp.net - 格式化此日期时间,不带秒或 AM/PM

.net - ADO.NET Entity Framework 和 NHibernate - 何时使用其中之一

c# - 构造函数中的线程...不好的做法?

c# - 使用分部类实现分层接口(interface)以提高可读性

c# - Entity Framework 仅适用于Web应用程序吗?

c# - 如果我需要保留 "wrapped"流,我应该处理 BinaryReader 吗?

c# - WPF 相当于 Form.ShowDialog(IWin32Window)