質問者
Strokeの太さを変えずに拡大縮小

質問
すべての返信
-
これは、そもそも Path を作成する際の座標値を変更(拡大・縮小するよう計算しなおす)する方がよいと思います。
この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。
マイクロソフト株式会社 デベロッパー&プラットフォーム統括本部 IT技術者アドバンス テクノロジー本部 デベロッパーエバンジェリズムグループ2009年5月20日 12:25 -
忘れてた
これは、そもそも Path を作成する際の座標値を変更(拡大・縮小するよう計算しなおす)する方がよいと思います。
これ、思ったのですが、MatrixTransform で、拡縮と、回転または移動を同時に指定したとき、やっかいではないですか?
「絵」を、拡大するときには、線も太くなっていいと思います。でも、「グラフ」や「図形」を拡大するときはどうでしょう?線まで太くなって欲しくはありません。別途拡縮用のメソッドを用意するより、線の太さをどうするかというモードがある方が、使いやすいように思います。
以前、ASP.NET でグラフ表示に使ったとき、太くならなかったような気がしたのだけれど、気のせいだった。
Jitta@わんくま同盟2009年6月29日 12:44 -
返信が遅れてしまい申し訳ございません。
>>大野さん
>>和人さん
Borderは外接矩形が描画されるだけで、BezierSegmentや、三角形といった図形を描画する時には適さないようです。
RenderTransformがあって、なぜ単なるTransformがないのかが腑に落ちないのですが。
現在、マウスで描画した図形をドラッグアンドドロップで移動や、サイズ変更をできるようにしているのですが、
ドラッグアンドドロップ中ではRenderTransformで描画しておき、
マウスアップされたときに現在操作を行っているPathSegmentのコピーをドラッグ後の座標
(大野さんがおっしゃるとおりに再計算を行って)で作成しなおし、
古いPathSegmentを削除後、改めてコピーしたPathSegmentを描画するということで対処しております。
RenderTransformは、扱いやすいのですが、Strokeの太さが変わってしまいます。
Strokeをクリックした場合と図形内部をクリックした場合とは別々の動作を行わせるために、
Strokeの太さは変えずに図形のリサイズを行いたかったのです。
>>Jittaさん
そうですよね。
Windows Formだったら、Path自体にMatrixかけられ、描画そのものはPathに依存しないものでとても扱いやすいですが、
Silverlightになると、
<Path><PathData><PathGeometry><PathFigure><PathFigure.Segments>ときて、ようやく描画実態エレメントである<PolyLineSegment>等を書くことができる。プログラムで書くにしてもこの階層構造に従い書かなければならない。
Windows Formsと比べて非常にめんどくさくなったというのが私の印象です。- 編集済み ritto 2009年7月13日 3:11
2009年7月13日 2:32