我目前有一个wxPanel,我通过使用来自wx.PaintDC的设备上下文来绘制线条,文本等以响应绘制事件。但是,我的绘图可能会超出面板的大小,并继续在可见屏幕之外。查看更多图纸的唯一方法是展开应用程序窗口,这是不切实际的,但仍然可能不允许在非常大的图纸的情况下看到完整的图纸。理想情况下,我希望能够滚动绘图,以便不需要调整应用程序窗口的大小,也可以看到大型绘图。
环顾四周,似乎我可能想要使用wxScrolledPanel而不是wxPanel。但是,我使用它没有成功 - 使用wxScrolledPanel只能在使用控件(例如按钮,文本字段)时工作而不是在设备上下文上绘制?
滚动已绘制的面板的适当方法是什么?
答案 0 :(得分:2)
它应该与ScrolledPanel一起使用,但如果您不打算在面板上安装其他小部件,那么它可能不是正确的答案,因为它取决于使用sizer来设置虚拟大小。
尝试使用wx.ScrolledWindow,并在演示中查看其示例以获取一些代码。基本上你只需要设置窗口的虚拟大小,它将处理滚动条并为你滚动。您还需要在绘图事件处理程序中调用PrepareDC,以便它将偏移绘图以匹配滚动的视口原点。
答案 1 :(得分:1)
我在StackOverflow上找到了以下答案,我认为你可能会想看一下:
这些答案似乎集中在wx.ScrolledWindow上,但我认为你可以使用这些答案中的概念并将它们与ScrolledPanel一起使用。我也在这个问题上找到了这个有趣的主题: