WPF-UIElement.RenderSizeがラインシェイプに対して機能しない
-
06-07-2019 - |
質問
描画アプリケーションを作成しようとしていますが、「選択モード」で奇妙な結果が得られます。長方形を描いて「選択」する場合RenderSizeは適切なサイズを返しますが、Lineが選択されている場合、RenderSizeはWidthをLine.X2に設定し、HeightをLine.Y2に設定したサイズを返します。たとえば、行はX1 = 50、Y1 = 50で始まり、X2 = 130、Y2 = 90で終わります。RenderSizeは、幅= 130および高さ= 90のサイズを返します。本当に気にする必要はありません)選択モードをできるだけ汎用的にするためにどの形状が選択されているか、ユーザーが選択した形状を移動している間に境界ボックスを描画したいです
問題をグーグルで検索しましたが、関連するものは何も見つかりませんでした。これは、Rectangleの位置がCanvasによって設定され、Lineのポイントが明示的に設定されているためですか?
解決
130x90になっている理由は、引用した理由です。 WPFの四角形は位置がなく、高さ/幅に過ぎないため、2つのサイズの値は等しくなります。
ただし、ポイントによって定義されるLineは、原点からの必要なオフセットを必ず定義するため、オフセットは境界ボックスに含まれます。
さらに、LineオブジェクトでCanvas.Top/Leftプロパティを引き続き使用して、さらにオフセットすることもできます。例:
<Canvas>
<Line X1="50" X2="130" Y1="50" Y2="90" StrokeThickness="1" Stroke="Blue" Canvas.Top="50" Canvas.Left="30"></Line>
</Canvas>
所属していません StackOverflow