在Delphi中在画布上绘制一个不可见的控件

时间:2012-09-25 14:02:09

标签: delphi draw invisible

我为Delphi制作了一个日历组件。现在我想在更改月份时添加视觉效果(如Windows Vista标准日历)。

现在我想创建一个不可见的组件副本,并在画布上绘制一个副本以将其用于视觉效果。我尝试了BitBlt函数但它不起作用,因为控件是不可见的。有没有办法在画布上绘制一个不可见的控件?

2 个答案:

答案 0 :(得分:5)

调用控件的PaintTo方法。那是TWinControl的后代。

我没有看到TGraphicControl后代的类似方法,但由于这些方法总是需要TWinControl父级,因此您只需在父控件上调用PaintTo即可获得TGraphicControl孩子。

答案 1 :(得分:2)

除了Rob的correct answer之外,我可以提出两种选择吗?

  1. 箭头和月份名称似乎不会滚动,因此我们将它们称为组件的标题,并使其成为组件的子控件。随后,让日子也成为一个子控制。现在可以在显示的那个旁边放置两个日控件。因为它们超出了组件的范围,所以这些旁边放置的日期控件是隐藏的,但一旦移动就会变得可见。在滚动操作结束时,将最外侧移动到另一侧并适当地设置其月份。

  2. 将日期的绘画移动到具有类似月份参数的单独例程。滚动时,请调用该例程两次。