我正在使用drawgrid來顯示「地下城」地圖。我有一個數組填充了描述每個單元格中的物理特徵類型的數據。房間和走廊的基本佈局等。每個排列都有一個PNG。需要將PNG繪製到Delphi XE6中的指導TDrawGrid
我試圖通過在drawgrid的每個單元中繪製相應的PNG來「繪製」地圖。我可以或多或少地直接使用DrawGrid1.Canvas.Draw(x,y,pngImage),但找出像素中的確切x,y因爲網格線而令人沮喪(至少,我發現它令人沮喪),我不確定我還會遇到什麼其他問題。
我也試過pngImage.Draw(DrawGrid1.Canvas,矩形),但再一次,我要計算矩形,這確實似乎是不必要的細胞和PNG格式都是40×40像素。
閱讀相關文章和示例,OnDrawCell似乎是一種更好的方式,因爲給定ARow和ACol,給定單元格的Rect顯然是預先計算好的(除非我誤解了我在幾處讀過的內容)。但是我發現的例子都沒有顯示OnDrawCell是如何觸發的。簡單的回答「當某些東西被拉進一個單元格中」並不能很好地解釋它。 這就是我正在嘗試做什麼。
(我經常發現這是用Delphi的文檔的情況:你給用例是如何解釋的(並不總是完全一致),但何時或爲什麼離開籠罩在神祕面紗...)
中當然,還有其他一些事情要弄清楚,比如控制拉格柵,以便在單元格點擊時不會擦除PNG。
任何相關的建議將不勝感激。 TFRM
OnDrawCell在需要繪製單元格時觸發,您引用的簡單答案不正確。當一個單元需要被繪製時,由操作系統決定,但你可以強制它這樣做。 –
爲什麼不在OnDrawCell中畫出你的PNG?我想我不明白這個問題。 –
我想我不明白OnDrawCell。我使用網格的唯一原因是,在繪製PNG後,用戶可以單擊相鄰(連接)的單元以「移動」到它們。我大概可以將它們全部繪製到TImage或其他東西上。 你是說我可以在畫布上「畫」而沒有任何特別的目的,只是爲了讓OnDrawCell着火,讓真正的繪畫發生?如上所述,問題不是如何,而是何時或爲什麼。 – Pete