我想在Delphi中根據畫布製作一個小遊戲。基本上,我想製作一個相當大的位圖(例如3000x3000),然後將它加載到畫布中,並且能夠像普通圖像查看器一樣向右/向左/向上/向下滾動,但是我無法似乎找到了我正在尋找的東西。有任何想法嗎?畫布/位圖滾動問題
1
A
回答
3
將圖像加載到屏幕外的TBitmap
對象。然後,OnPaint
或任何時候適用於您的特定應用,請使用BitBlt
或Canvas.Draw
在畫布上繪製TBitmap
的矩形子圖像。該子部分應該在TBitmap
上的(X, Y)
開始,其寬度和高度分別等於形式的ClientWidth
和ClientHeight
。
現在,響應鍵盤事件。寫一個FormKeyDown
事件處理程序,並聽取Key = VK_LEFT
,Key = VK_RIGHT
,Key = VK_UP
和Key = VK_DOWN
(使用case
語句)。當您檢測到按下此鍵時,根據需要增加/減少X
或Y
,並使用此起點重新繪製場景。
您還可以響應MouseDown
,MouseMove
和MouseUp
事件以使用鼠標進行滾動。您可以只使用中間的一個(MouseMove
):您可以檢查光標是否靠近窗體的邊緣,如果是,請順利地在此方向上滾動(例如使用TTimer
)。或者,您可以在MouseDown
中將FMouseDown
標誌設置爲true
,並將其重置爲false
,MouseUp
。然後,在MouseMove
中,如果FMouseDown
爲true
,且在y方向上的增量爲Y-YOld
,則在x方向上將位圖滾動增量X-XOld
。 (在此,X
和Y
是MouseMove
事件處理程序的參數; (X, Y)
是光標的當前位置。)的MouseMove
過程應當與
XOld := X;
YOld := Y;
結束不管FMouseDown
是打開還是關閉。
相關問題
- 1. Facebook畫布水平滾動條問題
- 2. JQuery:滾動動畫問題
- 3. 滾動動畫marginTop問題
- 4. jquery動畫滾動問題
- 5. 畫布動畫問題
- 6. HTML5畫布動畫問題
- 7. 畫布動畫CPU問題
- 8. 畫布滾動
- 9. 滾動視圖相對佈局問題
- 10. 問題與滾動視圖內佈局
- 11. 畫布 - 移動圖像問題
- 12. Flex帆布滾動問題
- 13. 畫布圖像問題
- 14. html5畫布滾動
- 15. android畫布滾動
- 16. Html畫布滾動
- 17. 滾動位置的問題
- 18. 畫布問題 - 繪圖時的滾動和縮放(保留透視圖)
- 19. 動畫身體滾動問題
- 20. scrollviewer和畫布 - 滾動視圖到給定的位置
- 21. 我的滾動位圖畫布太慢,無法使用
- 22. Android - 畫布混亂(繪圖和滾動)
- 23. 參考畫布位置的問題
- 24. WPF問題(SizeChanged事件,滾動查看器+畫布)
- 25. 使用Tkinter實現滾動條時畫布大小的問題
- 26. UIScrollview滾動問題與自動佈局
- 27. 滾動視圖中的大畫布/位圖或滾動畫布上的重繪畫布?什麼方式更快,也避免java.lang.OutOfMemoryError
- 28. 問題與uiscrollview setcontentoffset動畫不滾動時動畫:是設置
- 29. 滾動畫布內容
- 30. createjs畫布重新滾動
爲了簡化,您可以在TScrollBox中使用TPaintBox。將TPaintBox尺寸設置爲位圖大小,使用OnPaint事件繪製位圖,並使用OnMouse事件以可編程方式滾動TScrollBox。 – 2010-09-14 20:33:56
好吧,不是很強大,但可能足以滿足非常簡單的需求。 – 2010-09-14 20:39:00