0

があり、CanvasそこMainWindowに線を引きます。my の幅/高さを超えて描画するとCanvas、描画は my で続行されますMainWindow。私のコードに間違いがありますか、それとも正常ですか?

<Canvas x:Name="coordinateSystem" HorizontalAlignment="Right" Height="580" Margin="0,10,283,0" VerticalAlignment="Top" Width="1024" Cursor="Cross" UseLayoutRounding="False"/>

ラインの新しい座標を取得するたびに呼び出す関数は次のとおりです。

// xOld, yOld and t are static
// t represents the time
private void drawPoly(double value) 
{    
    t++;
    Point pOne = new Point(xOld, yOld);
    Point pTwo = new Point(t, value);

    GeometryGroup lineGroup = new GeometryGroup();
    LineGeometry connectorGeometry = new LineGeometry();
    connectorGeometry.StartPoint = pOne;
    connectorGeometry.EndPoint = pTwo;
    lineGroup.Children.Add(connectorGeometry);
    System.Windows.Shapes.Path path = new System.Windows.Shapes.Path();
    path.Data = lineGroup;
    path.StrokeThickness = 1;
    path.Stroke = path.Fill = Brushes.Red;

    coordinateSystem.Children.Add(path);    

    xOld = t;
    yOld = value;
}

どうも

PS:描画されたすべてのポイントを保存する方法はありますか? 後でキャンバスのサイズを変更したい(ズームアウト/ズームイン)か、キャンバス内のペイントされた線を大きく移動してから、すべてのポイントを再度描画する必要があります。

4

1 に答える 1

2

キャンバスは子要素をクリップしません。子要素が Canvas の外に描画されるのを止めたい場合は、ClipToBounds を true に設定するか、Canvas の Clip を設定する必要があります。

于 2013-05-02T17:09:46.460 に答える