質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

3回答

9122閲覧

WPF ベクトル図形を扱いたい

ElecDove

総合スコア254

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2017/04/15 14:14

編集2017/04/15 14:18

お世話になっております

ひとつ前の質問でも同様の投稿をしたのですが、
プラットフォーム(?)をWPFでやってみたいと思ったので再度質問させていただきます

簡易的なCAD(CAM)を作りたいと思い、DXFファイル(CADのファイル)の読み込み機能を作りました

画面に、直線や、円弧等のベクタ図形を描かなければならず、どのようなコントロール(?)を使ってどのような方針で作っていくのがいいかいまいちわからず質問させていただきます

canvasというコントロールがあるようですが、これは、ビットマップになると思います
故に、直接ベクタを扱えるわけではないですよね

ビットマップ(を表現するコントロール)のみを使ってベクタを表現するとなると、
裏で(配列?座標平面?に)ベクタ図形を色々保存しておいて、表示範囲に含まれる図形を計算してその都度ビットマップに変換して描画、なんてことになりますでしょうか
(そもそもディスプレイはドットのあつまりである以上広義のビットマップ?)

また、あまり詳しくはわかっていないのですが、WPFはフォーム全体がベクタで構成されていると聞きます
この機能をうまいこと利用してやることはできるのでしょうか

わかりづらい質問であるとは思いますが皆様のお知恵をお借りできればと覆います

よろしくお願いいたします

↓WinFormのBitmapで読み込み表示したDXFファイルです。
やりたいこととしては、図形の大きさの変更、位置の変更、画面の拡大縮小といった内容になります
参考:WinFormのBitmapで表示したDXFファイル

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

WPF での図形と基本描画の概要
を見ていただければわかりますが、WPFではベクターが基本といっても良いかもしれません。

また、WPFの強力な機能として、DataTemplateとBindingがあります。
これらの機能を利用すれば、内部のデータ構造は通常のクラスで任意に作成し、
描画はItemsControl等を利用してDataTemplateでの表示が可能です。
これにより、コントロール等のUI要素を直接触る必要がなくなるので、CADのような構造は非常に作りやすいと思います。

投稿2017/04/18 23:26

mituha

総合スコア385

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ElecDove

2017/04/20 02:58

具体的なキーワードありがとうございます それぞれ調べながら実装していきたいと思います
guest

0

ベストアンサー

WPFでの絵描きはこういう感じです。
http://grabacr.net/archives/795
http://gushwell.ldblog.jp/archives/52307936.html
イラストレーターとかに近いです。Web周りでいうとSVGに近いです。

そのため、

canvasというコントロールがあるようですが、これは、ビットマップになると思います

が意味不明です。最終的には、ディスプレイの点を描画し、ビットマップ的になりますが、WPFでプログラム上扱うのは、線や丸などのオブジェクトです。出力までしていません。オブジェクト自身が実際の描画を担当するという形です。

なので、

ビットマップ(を表現するコントロール)のみを使ってベクタを表現するとなると、

裏で(配列?座標平面?に)ベクタ図形を色々保存しておいて、表示範囲に含まれる図形を計算してその都度ビットマップに変換して描画、なんてことになりますでしょうか

をWPFのフレームワーク自身でやっていることになります。
回転とかもやってくれます。

動的に絵を生成するなら、canvasにコントロールをAddしていきながら作ります。

また、図形そのものが、オブジェクトであるため、マウスでつかんで動かすとかのことは、System.Drawを使うより圧倒的にやりやすいと思います。世の中にあるベクター系ソフト同様、マウスでつかむようにするための工夫は必要ですけど。(小さすぎるとクリックできないので)

投稿2017/04/16 17:24

編集2017/04/16 18:04
kiichi54321

総合スコア1984

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ElecDove

2017/04/19 02:54

回答ありがとうございます >>をWPFのフレームワーク自身でやっていることになります。 これは非常にありがたいところです こんなの自作してたら途方もない時間がかかりそうなので… >>動的に絵を生成するなら、canvasにコントロールをAddしていきながら作ります。 このあたりは、フォームを動的に追加していくのと同じような感じぽいですね >>また、図形そのものが、オブジェクトであるため、マウスでつかんで動かすとかのことは、System.Drawを使うより圧倒的にやりやすいと思います。世の中にあるベクター系ソフト同様、マウスでつかむようにするための工夫は必要ですけど。 どうやって、図形をクリックしたときにコントロールポイントを表示するか、ちょっと思いつかないのでまた質問させていただくかもしれません
guest

0

[C#/XAML] WPF でグラフィックスを描画する (Windows フォームから WPF へ)

描ければいいのですか?
この辺りを読んで見られては?

投稿2017/04/16 10:49

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問