■79120 / inTopicNo.5) |
Re[4]: 【wpf】canvas範囲指定塗りつぶし |
□投稿者/ ito (21回)-(2016/03/09(Wed) 17:40:23)
|
■No79119 (のりっち さん) に返信
> ■No79112 (ito さん) に返信
>>■No79111 (ito さん) に返信
> >>■No79084 (のりっち さん) に返信
> 三角形描画時で、3点でA(10,10),B(15,20),C(20,500)といった一つの点だけ
> 大きく特出していて、BCの角度が10度以下等、少ない値になる場合に発現します。
>
> 本来はABCの座標どおりにcanvasに描画されるところを、Cのところだけ見た目的に
> C(20,520)といった感じに、指定した座標よりはみ出して描画されてしまいます。
もしかすると、「Polygon.StrokeLineJoin」が関係していませんでしょうか?
「StrokeLineJoin="Bevel"」にすると、はみ出しはなくなります。
"Miter"/"Round"だとはみ出しますが、これは仕様でしょう。
//---サンプルXAML
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Test"
Width="800" Height="600">
<Grid>
<Canvas Width="800" Height="600">
<Border Canvas.Left="0" Canvas.Top="0" Background="Black" Width="20" Height="500" />
<Polygon Canvas.Left="0" Canvas.Top="0"
Stroke="Red"
StrokeLineJoin="Bevel"
StrokeThickness="10"
Points="10,10 15,20 20,500"
/>
<Border Canvas.Left="50" Canvas.Top="0" Background="Black" Width="20" Height="500" />
<Polygon Canvas.Left="50" Canvas.Top="0"
Stroke="Green"
StrokeLineJoin="Miter"
StrokeThickness="10"
Points="10,10 15,20 20,500"
/>
<Border Canvas.Left="100" Canvas.Top="0" Background="Black" Width="20" Height="500" />
<Polygon Canvas.Left="100" Canvas.Top="0"
Stroke="Blue"
StrokeLineJoin="Round"
StrokeThickness="10"
Points="10,10 15,20 20,500"
/>
</Canvas>
</Grid>
</Window>
|
|