在控件上正确绘制与其背景形成对比的文本

时间:2011-10-04 20:54:44

标签: c# winforms background gdi+ contrast

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。 deviantart。净/ fs71 / F / 2011/277/0/9 / controls_by_tekuconcept-d4btji9.png

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

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

这有点像黑客,但它确实有效。