2

キャンバス上に線を生成するための次のコードを書きました

XAML

<Canvas HorizontalAlignment="Left" 
        x:Name="canvas1" Height="219" 
        Margin="10,10,0,0" Grid.Row="1" 
        VerticalAlignment="Top" Width="365"/>

C#

private void Draw()
{
    canvas1.Children.Clear();
    for (int i = 0; i < data.Length; i++)
    {
        data[i] = i;
        lines[i] = new Line()
        {
            X1 = leftMargin,
            Y1 = i * scale,
            X2 = i * scale,
            Y2 = i * scale,
            StrokeThickness = 2,
            Stroke = new SolidColorBrush(Colors.Black)
        };
        canvas1.Children.Add(lines[i]);
    }
}

ここに画像の説明を入力

しかし、私は以下のように線を引きたい.キャンバスを回転させて目的の出力を達成する方法 ここに画像の説明を入力

4

3 に答える 3

1
<Canvas.RenderTransform>
    <RotateTransform CenterX="110" CenterY="183" Angle="270" />
</Canvas.RenderTransform>

またはコードで:

Canvas.RenderTransform = new RotateTransform(270, 109.5, 182.5);

このようなもの?

于 2013-04-04T13:09:29.043 に答える
1

キャンバスを回転させたい場合は、単純に変換を適用できます。

<Canvas.RenderTransform>
  <RotateTransform CenterX="110" CenterY="183" Angle="270" />
</Canvas.RenderTransform>

John Willemse が提案したようにしたい場合は、コードを次のように変更します。

X1 = i * scale,
Y1 = bottomMargin,
X2 = i * scale,
Y2 = i * scale,
于 2013-04-04T13:12:00.913 に答える
1

x = 0 および y = 0 は左上隅 (左下ではない) であるため、y は上下逆のようなものです。

private void Draw()
{
    Line[] lines = new Line[100];
    int scale = 3;
    canvas1.Children.Clear();
    int yStart = 290;
    for (int i = 0; i < lines.Length; i++)
    {
        //data[i] = i;
        lines[i] = new Line()
        {
            X1 = i * scale,
            Y1 = yStart,
            X2 = i * scale,
            Y2 = 300 - (i * scale),
            StrokeThickness = 1,
            Stroke = new SolidColorBrush(Colors.Black)
        };
        canvas1.Children.Add(lines[i]);
    }
}
于 2013-04-04T14:10:08.257 に答える