如何才能清除以前涂过的东西?

时间:2010-12-18 10:48:09

标签: delphi controls paint

我正在使用Delphi,我正在使用类TControl构建自己的标签组件。 在我根据属性(如标题,字体等)绘制文本之前,我想要清除paint rect,就像组件的位置没有任何东西一样。我的意思是我想让它像玻璃一样,以便显示其背后的其他组件;然后绘制文本。如何绘制贴在我标签后面的其他组件呢?

2 个答案:

答案 0 :(得分:4)

要做到这一点,你不需要做任何事情。 : - )

制作透明的类似标签的组件时,最好使用TGraphicControl基类。这实际上只不过是一幅画画。每当更改内容时,您都可以调用Invalidate方法重新绘制控件。这将调用您可以覆盖的Paint方法。每次重新绘制时,您的控件都将清晰透明,除了您使用Paint方法绘制内容的部分。

答案 1 :(得分:0)

除非你覆盖并禁用背景画,否则你不需要做任何事情。这取决于你去的基类。虽然你可以简单地使用(在Paint()方法中):

Canvas.Brush.Style:=bsSolid;
Canvas.Brush.Color:=self.Color; //If you have a public color property
Canvas.FillRect(ClientRect);

您还应该阅读TControlCanvas。这是一个更深入处理此主题的网站:http://www.delphidabbler.com/tips/75