1

プラグインを作成しようとしている CAD アプリケーションがあり、線と円弧を選択できるようにする必要があります。アプリケーションから直接これを行うことはできません。私のコードでは、マウスを使ってフリーハンドでウィンドウ四角形を描き始めたいと思っています。API を介して、描画されたばかりの長方形にどの線/円弧が囲まれているかを判断できます。

問題は、マウスから別のアプリケーションの上に四角形を描くにはどうすればよいかということです。左クリックして左上隅を開始し、ドラッグしてサイズを変更し、左クリックを離して長方形を終了しますか? 実際にはフォームも含まれていないので、picturebox/TCanvas を使用できるかどうかはわかりません。私にとって、これは、保存したい画面の部分に四角形を描くウィンドウ画面のキャプチャのようなものです。

4

2 に答える 2

1

「画面上に長方形を描くにはどうすればよいですか?」に関するコメント セクションの最後の質問について:

次のような方法で、現在のデスクトップのハンドルを取得する必要があります。

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) があり、非常に簡単な手順でアプリケーションのプラグイン フレームワークを構築できます。

于 2013-07-13T14:33:34.617 に答える