2

プロジェクトにいくつかプロットする必要があるWPFプロジェクトがありlinesます。しかし、ウィンドウのサイズを変更linesすると、キャンバス座標を使用して線をプロットするため、サイズが変更されません。行のサイズをウィンドウのサイズに合わせて変更する方法を教えてください。

行の私のコード:

public static void drawGridLines(MainWindow main)
    {
            double axisX = 10;
            Line lastLine = new Line();
            lastLine.X2 = axisX;
            lastLine.Y2 = 15;
            double y = 0;
            double x = 0;
            bool first = true;
            int[] point = new int[10] { 1, 3, 8, 9, 9, 0, 7, 5, 4, 1 };

        for (int i = 0; i < point.Length; i++) // iterate over your gridview rows 
            {
                Line newline = new Line();

                newline.X1 = lastLine.X2;
                newline.Y1 = lastLine.Y2;

                newline.X2 = axisX + (Point[i] * 5); // calculate X position of the current cell 
                newline.Y2 = lastLine.Y2 + 10; // calculate Y position of the current cell 
                x = newline.X2;
                y = newline.Y2;

                if (!first)
                {
                    // first minimum cell should't be drawn, it is just the start point for next line                  
                    drawLine(main, newline);
                }
                else
                {
                    first = false;
                }

                lastLine = newline;
            }


public static void drawLine(MainWindow main, Line line)
    {
        line.HorizontalAlignment = HorizontalAlignment.Left;
        line.VerticalAlignment = VerticalAlignment.Center;
        line.Stroke = System.Windows.Media.Brushes.SteelBlue;
        line.StrokeThickness = 1.5;
        main.myLineCanvas.Children.Add(line);

    }
4

3 に答える 3

2

Canvasにあなたを置きますViewbox

<Viewbox>
    <Canvas x:Name="myLineCanvas" />
</Viewbox>

Stretchとで動作を変更できますStretchDirection

ここに画像の説明を入力してください

于 2012-11-16T14:58:32.760 に答える
1

ViewBoxを使用してみて、それが自分のケースでうまく機能するかどうかを確認する必要があります。これは、キャンバスをViewBoxで囲むのと同じくらい簡単です。

<Window ...
    ...>

    <ViewBox>
        <Canvas .....>
        </Canvas>
    </ViewBox>
</Window>
于 2012-11-16T14:57:46.983 に答える
0

ウィンドウには SizeChanged イベントがあります。ハンドラーで、ウィンドウの新しいサイズを取得し、それに応じてラインのエンドポイントを設定できます。

于 2012-11-16T14:51:33.853 に答える