【问题标题】:Properly draw text on a control contrasted to it's background在与其背景形成对比的控件上正确绘制文本
【发布时间】:2011-10-04 20:54:43
【问题描述】:

http://fc04.deviantart.net/fs71/f/2011/277/7/6/problem_by_tekuconcept-d4btjlx.png

如上图所示,我希望能够在字符串中绘制对比。 我已经阅读了这个链接:关于同一件事(技术上)(http://stackoverflow.com/questions/1192543/drawing-a-contrasted-string-on-an-image/1192560#1192560)在那里我找到了这个链接:talking about how to create an XOR pen/brush。我在绘制到面板时尝试了 GDI,但在初始化时,我得到了一个 “...检测到不平衡堆栈...”。有没有办法可以创建这种效果(无需接近应用发光/轮廓)。

我在想我可以用同样的方式将一种颜色绘制到位图上,也可以绘制另一种颜色。合并它们,我目前不知道该怎么做,我不确定它会对计算机性能产生什么影响。

(对于任何对我在做什么感到好奇的人......我正在创建一组基于当前专业 GUI 样式的自定义设计控件): fc09 .离经叛道。 net/fs71/f/2011/277/0/9/controls_by_tekuconcept-d4btji9.png

【问题讨论】:

    标签: c# winforms background gdi+ contrast


    【解决方案1】:

    使用不同的剪切区域和不同的颜色绘制文本两次。

    【讨论】:

      【解决方案2】:

      我当前对此类进度条的实现使用两个位图,它们代表进度条的两半。

      1) 绘制与当前进度值一样宽的位图。
      2) 用进度条颜色填充它。
      3)将文本写在适当的位置,就好像它在控件的中间一样。它可能会切断右边。
      4) 绘制一个与进度条的其余部分一样宽的位图。
      5) 用背景颜色填充它。
      6) 将文本写在同一位置,使其位于图像的左侧。
      7) 合并两者。

      这有点小技巧,但它确实有效。

      【讨论】:

      • 我想我明白你在说什么以及我如何能够做到这一点(也许)。目前我在 UserControl 中所做的是在它的绘制事件上,我按以下顺序绘制:背景、条形、边框、文本。根据您的说法,我相信我可以在背景之后用一种颜色绘制文本,然后在条形图之后用另一种颜色绘制一次(使用剪切平面)。谢谢,你让我的轮子又在我脑海里转动了......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-02
      • 1970-01-01
      • 2011-09-07
      • 2011-02-04
      • 1970-01-01
      • 2013-05-26
      • 1970-01-01
      相关资源
      最近更新 更多