私はdrawgridを使用して「ダンジョン」マップを表示しています。私は、各セルにどのようなタイプの物理的な特徴があるのかを記述するデータが入った配列を持っています。部屋と廊下などの基本レイアウト。各順列にはPNGがあります。PNGをDelphi XE6 TDrawGridに描画する際のガイダンスが必要
ドローグリッドの各セルに適切なPNGを描画してマップを「描画」しようとしています。 DrawGrid1.Canvas.Draw(x、y、pngImage)を使って多かれ少なかれ直接行うことができますが、正確なx、yをピクセル単位で計算することはグリッドラインのためにイライラします(少なくとも、 )、私は他の問題が私は道を踏み出すだろうか分からない。
pngImage.Draw(DrawGrid1.Canvas、Rect)でも、セルとPNGがすべて40x40ピクセルであるため、実際には不要と思われるRectを計算する必要があります。
与えられたセルのRectは、明らかにあらかじめ計算されています(いくつかの場所で私が読んだものを誤解している場合を除きます)。なぜなら、与えられたARowとAColによって、OnDrawCellがより良い方法であるようです。しかし、私が実際に見つけた例のどれもOnDrawCellがどのようにトリガーされたかを示していません。簡単な答えは、「何かが細胞に引き込まれたとき」は本当にそれをはるかによく説明していません。 これは私がやろうとしているものです。です。
(私は多くの場合、これは、Delphiのドキュメントの場合であることが判明しました:どのように(常にではない正確にあなたの特定のユースケースのために)説明するが、場合、または、なぜが謎に包ま残されている。)
のもちろん、描画グリッドを制御して、セルがクリックされたときにPNGを消去しないようにするなど、他にもいくつかの点があります。
関連する提案があれば幸いです。 TFRM
セルをペイントする必要があるときにOnDrawCellがトリガーされます。簡単な答えは正しくありません。セルをペイントする必要がある場合は、OSによって決定されますが、強制的に実行することができます。 –
あなたのPNGをOnDrawCellで描かないのはなぜですか?私はその質問を理解していないと思う。 –
私はOnDrawCellを理解していないと思います。グリッドを使用している唯一の理由は、PNGを描画した後、ユーザーが隣接する(接続された)セルをクリックして「移動」できることです。私はおそらくそれらをすべてTImageまたは何かに描くことができます。 あなたは、私が本物の描画が行われますので、ちょうどOnDrawCellの火を作るために、任意の特定の目的なしにキャンバスに「描く」ことができると言っていますか? 言われたように、問題は方法ではなく、いつまたはいつかである。 – Pete