我为 Delphi 做了一个日历组件。现在,我想在更改月份时添加视觉效果(类似于 Windows Vista 标准日历)。
现在,我想创建一个不可见的组件副本,并将其绘制到画布上以用于视觉效果。我尝试使用 BitBlt
函数,但它不起作用,因为控件是不可见的。有没有办法在画布上绘制一个不可见的控件?
我为 Delphi 做了一个日历组件。现在,我想在更改月份时添加视觉效果(类似于 Windows Vista 标准日历)。
现在,我想创建一个不可见的组件副本,并将其绘制到画布上以用于视觉效果。我尝试使用 BitBlt
函数,但它不起作用,因为控件是不可见的。有没有办法在画布上绘制一个不可见的控件?
调用控件的PaintTo
方法。这适用于TWinControl
的子类。
我没有看到TGraphicControl
的后代有类似的方法,但由于这些控件总是需要一个TWinControl
父级,您可以在父级控件上调用PaintTo
以获取TGraphicControl
子级的图像。
箭头和月份名称似乎无法滚动,因此让它们成为组件的标题,并将其作为子控件。随后,将天数也作为子控件。现在可以将两个day-controls放置在所示的旁边。由于它们超出了组件的边界,这些旁边放置的day-controls被隐藏,但是一旦它们移动,就会变得可见。在滚动操作结束时,将最外层移到另一侧并适当设置其月份。
将天数的绘制移动到具有类似参数的月份的单独程序中。滚动时,调用该程序两次。