我試圖在可滾動窗口中顯示非常大的地圖。這個想法是,你有一個方形瓷磚的網格與每個瓷磚的圖像,你可以滾動來看到它們。每個tile還有一些數字信息(我可以用wx.StaticText繪製這個信息),你可以點擊並右鍵單擊這些tile來執行某些操作。非常大的wx.ScrolledPanel渲染
我在此的第一遍是使用wx.Panel爲每個tile和wx.ScrolledWindow爲地圖。然而,wx.ScrolledWindow似乎在大量的tile(大約4fps的卷軸)下性能很差。
我的下一個嘗試是使用一個flyweight pattern,它有9個大的面板,每個面板使用wx.dc可以渲染大約一百個圖塊。當用戶向一個方向滾動並且面板離開屏幕時,我將它們添加到死區並重新配置死區中的新面板。然而,這看起來並不是特別好,因爲每當面板重新定位時都會出現閃爍。此外,似乎根據當前滾動位置而不是虛擬空間的原點定位了wx.ScrolledWindow內的面板(例如panel.SetPosition(...)
),並且這使得難以避免競爭狀況,因爲滾動位置可能會改變,而面板仍在重新配置。
什麼是在wxPython中渲染非常大的滾動內容的推薦模式?我熟悉在我的本地WM中實現這一點的方法,並且我已經在wxWidgets中實現了fairly large scroll areas。但似乎沒有任何例子可以用於wxPython的大型滾動內容。