0

我目前有一个 wxPanel,我通过使用来自 wx.PaintDC 的设备上下文来绘制线条、文本等以响应绘制事件。但是,我的绘图可能会超出面板的大小,并且会继续超出可见屏幕。查看更多绘图的唯一方法是扩展应用程序窗口,这是不切实际的,并且在非常大的绘图的情况下仍然可能无法看到完整的绘图。理想情况下,我希望能够滚动绘图,这样应用程序窗口就不需要调整大小并且可以看到大图。

环顾四周,似乎我可能想使用 wxScrolledPanel 而不是 wxPanel。但是,我使用它没有成功 - 使用 wxScrolledPanel 是否仅在使用控件(例如按钮、文本字段)而不是在设备上下文上绘画时才有效?

滚动已绘制的面板的适当方法是什么?

4

2 回答 2

2

它应该与 ScrolledPanel 一起使用,但如果您不打算在面板上使用其他小部件,那么它可能不是正确的答案,因为它取决于有一个 sizer 来设置虚拟大小。

尝试改用 wx.ScrolledWindow,并在演示中查看其示例以获取一些代码。基本上你只需要设置窗口的虚拟大小,它会为你处理滚动条和滚动。您还需要在您的绘图事件处理程序中调用 PrepareDC,以便它会偏移绘图以匹配滚动的视口原点。

于 2013-02-28T22:06:32.743 回答
1

我在 StackOverflow 上找到了以下答案,我认为您可能想看看:

这些答案似乎集中在 wx.ScrolledWindow 上,但是我认为您可以使用这些答案中的概念并将它们与 ScrolledPanel 一起使用。我还发现了这个有趣的话题:

于 2013-02-28T22:08:07.920 回答