2011-10-04 47 views
0

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。 net/fs71/f/2011/277/0/9/controls_by_tekuconcept-d4btji9.png

回答

3

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

0

我目前的这种进度条实现使用了两个位图,它们代表了进度条的两半。

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

这是一个黑客,但它的作品。

+1

我想我明白你的意思,以及我怎么能够做到这一点(也许)。目前我在UserControl中做的是绘制事件,我按照这个顺序绘制:背景,栏,边框,文本。根据你的说法,我相信我可以在背景之后使用一种颜色绘制文本,然后在使用剪裁平面之后使用另一种颜色绘制文本。谢谢你,我的轮子再次转过头来...... – TekuConcept