6

スクロールボックスとペイントボックス(グリッドを描画するため)で構成される基本的なマップエディターを楽しみのために作成しようとしています。

ペイントボックスの OnMouseDown イベントでは、実行時に画像を作成し、それらをスクロールボックス内に追加します。グリッド ペイントボックスは画像の上に描画されます (グリッドが背面にあると見栄えが悪いため)。

サンプル画面は次のとおりです。

ここに画像の説明を入力

私の質問は、2 つの問題を 1 つに解決します。

  • 実行時に画像をドラッグ アンド ドロップ (移動) できる必要があります。
  • また、画像の X 位置と Y 位置を情報として表示できるようにする必要もあります。

上記の問題を解決するには、まずマウスカーソルの下に画像を取得する必要があります。しかし、画像の上にグリッド (ペイントボックス) をペイントするため、カーソルはペイントボックス グリッドのみを「見る」ことができ、下にある画像は表示されません。

ペイントボックス グリッドを TImage にコピーして実験しましたが、すべてがうまくいかず、メモリ不足のエラーが発生していました。マップのサイズは非常に大きくなる可能性があるため、グリッドをビットマップに配置することは、メモリや制限などのために理想的ではありません.

グリッドは上部に配置する必要があります。そうしないと、次のようになります。

ここに画像の説明を入力

これはグリッドを隠しますが、私はそれを望んでいません。

では、FindVCLWindow などを使用して、ペイントボックスを通過して下の画像にアクセスするにはどうすればよいでしょうか。

4

1 に答える 1

8

EnabledPaintBoxのプロパティを に設定しますFalse。これにより、マウス メッセージが通過します。

さらに遠く:

OnMouseDownPaintBoxのイベントでは、実行時に画像を作成し、スクロールボックス内に追加します

OnMouseDownこれをScrollBoxのイベントに変更します。で座標を調整しScrollBox.[Horz/Vert]Scrollbar.Positionます。

于 2013-09-22T21:07:04.117 に答える