「画面上に長方形を描くにはどうすればよいですか?」に関するコメント セクションの最後の質問について:
次のような方法で、現在のデスクトップのハンドルを取得する必要があります。
procedure TForm1.FormCreate(Sender: TObject);
begin
fCanvas := TCanvas.Create;
fCanvas.Handle := GetWindowDC(0); //or CreateDC('DISPLAY', nil, nil, nil);
end;
注: fCanvas は TForm1 のフィールドとして宣言されています。例:
Type
Tform1=Class(tForm)
...
...
protected
fCanvas: TCanvas
End;
TForm1 を破棄するときは、fCanvas を解放する必要があることに注意してください。
procedure TForm1.FormDestroy(Sender: TObject);
begin
fCanvas.Free;
end;
完全な例はここで確認できます: Delphi の古いバージョンで行われましたが、動作するはずです
http://www.delphitricks.com/source-code/graphic/draw_directly_to_the_desktop.html
また、DelphiForFun には、画面上に長方形を描画する方法の実用的な例があります
http://www.delphiforfun.org/Programs/Delphi_Techniques/Canvas_Drawing.htm
また、DelphiForfun には、達成したいことのために独自の描画プログラムを作成する方法の例があります。小切手:
1) 計算幾何学: http://www.delphiforfun.org/Programs/Library/geometry1.htm (マウスを使ったキャンバス描画の優れた例)
2) グラフ検索: http://www.delphiforfun.org/Programs/Library/Graphs1.htm
ところで、明確にするために、あなたはプラグインを開発していると言っているので、次のようになります。
a) CAD アプリケーションはサードパーティのものですか? もしそうなら、あなたの CAD プログラムは、ViewPort と対話するプラグインを管理するための API インターフェイスを既に持っているので、マップ ビューアーのキャンバス参照を取得する方法と、形状の描画を行う方法があるはずです。
b) CAD アプリケーションを開発していますか? これをプラグインとして追加する場合は、API 構造を設計する必要があるため、プラグインを登録するときに、プラグインが ViewPort のキャンバスにアクセスできる方法を追加することもできます
JEDI VCL にはいくつかのプラグイン システム コンポーネント (TJvPlugin および TJvPluginManager) があり、非常に簡単な手順でアプリケーションのプラグイン フレームワークを構築できます。