質問: お世話になっております ひとつ前の質問でも同様の投稿をしたのですが、 プラットフォーム(?)をWPFでやってみたいと思ったので再度質問させていただきます 簡易的なCAD(CAM)を作りたいと思い、DXFファイル(CADのファイル)の読み込み機能を作りました 画面に、直線や、円弧等のベクタ図形を描かなければならず、どのようなコントロール(?)を使ってどのような方針で作っていくのがいいかいまいちわからず質問させていただきます canvasというコントロールがあるようですが、これは、ビットマップになると思います 故に、直接ベクタを扱えるわけではないですよね ビットマップ(を表現するコントロール)のみを使ってベクタを表現するとなると、 裏で(配列?座標平面?に)ベクタ図形を色々保存しておいて、表示範囲に含まれる図形を計算してその都度ビットマップに変換して描画、なんてことになりますでしょうか (そもそもディスプレイはドットのあつまりである以上広義のビットマップ?) また、あまり詳しくはわかっていないのですが、WPFはフォーム全体がベクタで構成されていると聞きます この機能をうまいこと利用してやることはできるのでしょうか わかりづらい質問であるとは思いますが皆様のお知恵をお借りできればと覆います よろしくお願いいたします ↓WinFormのBitmapで読み込み表示したDXFファイルです。 やりたいこととしては、図形の大きさの変更、位置の変更、画面の拡大縮小といった内容になります ![参考:WinFormのBitmapで表示したDXFファイル](https://teratail.storage.googleapis.com/uploads/contributed_images/7952254a93b9f16e9d612c16de0ab8b3.jpeg)
回答: WPFでの絵描きはこういう感じです。 http://grabacr.net/archives/795 http://gushwell.ldblog.jp/archives/52307936.html イラストレーターとかに近いです。Web周りでいうとSVGに近いです。 そのため、 > > canvasというコントロールがあるようですが、これは、ビットマップになると思います > > > が意味不明です。最終的には、ディスプレイの点を描画し、ビットマップ的になりますが、WPFでプログラム上扱うのは、線や丸などのオブジェクトです。出力までしていません。オブジェクト自身が実際の描画を担当するという形です。 なので、 > > ビットマップ(を表現するコントロール)のみを使ってベクタを表現するとなると、 > > 裏で(配列?座標平面?に)ベクタ図形を色々保存しておいて、表示範囲に含まれる図形を計算してその都度ビットマップに変換して描画、なんてことになりますでしょうか > > > をWPFのフレームワーク自身でやっていることになります。 回転とかもやってくれます。 動的に絵を生成するなら、canvasにコントロールをAddしていきながら作ります。 また、図形そのものが、オブジェクトであるため、マウスでつかんで動かすとかのことは、System.Drawを使うより圧倒的にやりやすいと思います。世の中にあるベクター系ソフト同様、マウスでつかむようにするための工夫は必要ですけど。(小さすぎるとクリックできないので)