问题描述
|
我想有一个带有一些控件的窗体,作为位图上的透明覆盖。此位图受变换矩阵(缩放和滚动)的影响。我正在尝试获得类似于GoogleMaps的外观,其中平移/缩放背景图像时控件不会移动。
我试图在我的ѭ0中模仿它。但是,滚动窗口时,只有新暴露的区域无效,因此我的控件不会重新绘制。
我试图计算旧控件的位置,使该区域无效,并使该控件应该位于的区域也无效。当我这样做时,它会闪烁,您仍然可以看到图像滚动。
我试图在显示窗口上放一个1英镑。但是,它始终使用其父控件滚动。我试图捕获滚动事件,然后调整ѭ1的位置。这也具有延迟更新效果,因此看起来不太好。
任何想法将不胜感激。
解决方法
在我看来,您需要使用Invalidate()控件来处理OnPaint事件。
, 不幸的是,由于自动滚动机制设置了它的位置,然后又恢复了它,所以出现了闪烁。结果是两条消息被发送到该按钮。
将位图和滚动逻辑放在单独的控件中,该控件可填充整个表单。这意味着您的位图控件和按钮都是窗体的子控件。
或者,您自己绘制按钮。然后,您当然需要做一些工作来使其响应鼠标单击等。ControlPaint类具有帮助您模仿Windows控件外观的方法。