透明的覆盖层,不会与其父对象一起滚动

问题描述

| 我想有一个带有一些控件的窗体,作为位图上的透明覆盖。此位图受变换矩阵(缩放和滚动)的影响。我正在尝试获得类似于GoogleMaps的外观,其中平移/缩放背景图像时控件不会移动。 我试图在我的ѭ0中模仿它。但是,滚动窗口时,只有新暴露的区域无效,因此我的控件不会重新绘制。 我试图计算旧控件的位置,使该区域无效,并使该控件应该位于的区域也无效。当我这样做时,它会闪烁,您仍然可以看到图像滚动。 我试图在显示窗口上放一个1英镑。但是,它始终使用其父控件滚动。我试图捕获滚动事件,然后调整ѭ1的位置。这也具有延迟更新效果,因此看起来不太好。 任何想法将不胜感激。     

解决方法

        在我看来,您需要使用Invalidate()控件来处理OnPaint事件。     ,        不幸的是,由于自动滚动机制设置了它的位置,然后又恢复了它,所以出现了闪烁。结果是两条消息被发送到该按钮。 将位图和滚动逻辑放在单独的控件中,该控件可填充整个表单。这意味着您的位图控件和按钮都是窗体的子控件。 或者,您自己绘制按钮。然后,您当然需要做一些工作来使其响应鼠标单击等。ControlPaint类具有帮助您模仿Windows控件外观的方法。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...