私はWPFとC#を使って線を描こうとしていますが、以下の問題に直面しています。WPF中心点からの角度で線を回転
イメージング私は固定長の線を描く必要があり、この線を所定の角度で回転させる必要があります。 45度とする。 しかし、私は中心点からこれを回転させるべきです。 きれいに理解できるように画像を添付しています。
いずれかは、C#のプログラムを書くために私を助けてください。
私はWPFとC#を使って線を描こうとしていますが、以下の問題に直面しています。WPF中心点からの角度で線を回転
イメージング私は固定長の線を描く必要があり、この線を所定の角度で回転させる必要があります。 45度とする。 しかし、私は中心点からこれを回転させるべきです。 きれいに理解できるように画像を添付しています。
いずれかは、C#のプログラムを書くために私を助けてください。
カスタム角度で線を回転するには、RotateTransformを適用します。 RenderTransformOriginプロパティを0.5 0.5
に設定すると、中心点を中心に回転することができます。
<Grid Width="200" Height="200">
<Line X1="0" Y1="0" X2="1" Y2="0" Stretch="Uniform" Stroke="Blue" StrokeThickness="2" RenderTransformOrigin="0.5 0.5">
<Line.RenderTransform>
<RotateTransform Angle="45" />
</Line.RenderTransform>
</Line>
</Grid>
角度が固定されている場合(例えば、常に同じ)、あなたは開始点と終了点の座標を計算し、変換を使用せずに斜めの線を描くことができます:
<Line X1="0" Y1="0" X2="200" Y2="200" Stroke="Blue" StrokeThickness="2" />
は、ここでの考え方です、あなたは、それを改善に必要なものにそれを形作るために必要
private void Rotate()
{
while (Degrees >= 360)
Degrees -= 360;
while (Degrees <= -360)
Degrees += 360;
X1 = 0;
Y1 = 0;
var rad = Degrees * Math.PI/180;
const int radius = 100;
var sin = Math.Sin(rad);
var cos = Math.Cos(rad);
var tan = Math.Tan(rad);
Y2 = sin * radius;
X2 = cos * radius;
}
XAML
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Orientation="Horizontal" >
<Label Content="Rotation" />
<TextBox Text="{Binding Degrees}" Width="50" Margin="5,5,0,5" HorizontalContentAlignment="Right" VerticalContentAlignment="Center"/>
<Label Content="°" />
<Button Content="Rotate" Margin="5" Command="{Binding RotateCommand}"/>
</StackPanel>
<Grid Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" >
<Line Stroke="Red" X1="{Binding X1}" X2="{Binding X2}" Y1="{Binding Y1}" Y2="{Binding Y2}"/>
</Grid>
</Grid>
どのような画像/描画APIを使用して線を描画していますか?またはWPFビューの行で、これを回転しようとしていますか? –