3

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

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

4

2 回答 2

5

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

我没有看到TGraphicControl后代的类似方法,但由于那些总是需要TWinControl父母,你可以调用PaintTo父控件来获取TGraphicControl孩子的图像。

于 2012-09-25T14:17:33.747 回答
2

除了 Rob 的正确答案,我可以提出两个替代方案吗?

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

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

于 2012-09-25T14:41:29.647 回答