首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不与父级一起滚动的透明覆盖

不与父级一起滚动的透明覆盖
EN

Stack Overflow用户
提问于 2011-05-28 04:20:46
回答 2查看 124关注 0票数 0

我想有一个表单,其中有几个控件作为透明覆盖在一个位图。此位图受变换矩阵(缩放和滚动)的影响。我正在尝试实现一个类似于GoogleMaps的外观,当背景图像被平移/缩放时,控件不会移动。

我试着在我的OnPaint中模仿这一点。然而,当滚动窗口时,只有新暴露的区域无效,所以我的控件不会重新绘制。

我试图计算旧控件的位置,使该区域无效,并使其本应位于的区域无效。当我这样做的时候,它会闪烁,你仍然可以看到滚动的图像。

我试着把一个ButtonControl放在我的显示窗口上。但是,它始终与其父控件一起滚动。我尝试捕获滚动事件,然后调整ButtonControl的位置。这也有延迟更新的效果,所以它看起来不是很好。

任何想法都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2011-05-28 05:12:03

在我看来,您需要对处理OnPaint事件的控件执行Invalidate()

票数 0
EN

Stack Overflow用户

发布于 2011-05-28 15:34:22

不幸的是,你得到了闪烁,因为自动滚动机制设置了它的位置,然后你恢复它。结果是向按钮发送了两条消息。

将位图和滚动逻辑放在一个单独的控件中,该控件填充整个窗体。这意味着您的位图控件和按钮都是窗体的子控件。

或者,您也可以自己绘制按钮。当然,您还需要做一些工作来使其响应鼠标单击,等等。ControlPaint类有一些方法可以帮助您模拟窗口控件的外观。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6157310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档