将子项添加到画布

时间:2014-12-26 13:50:49

标签: c# xaml canvas

我在向画布添加子画面(行)时遇到问题,当我调试代码时,我发现画布上有我添加的子画面,但我没有在画布上看到它们: 这是我的代码:

XAML:

<Grid x:Name="CanvasGrid" Grid.Column="0" Grid.Row="1">
    <Canvas Background="Bisque" x:Name="PatyczakCanvas"></Canvas>
</Grid>

C#

var _body = new Line
{
    X1 = 120,
    X2 = 120,
    Y1 = 20,
    Y2 = 75,
    Width = 20.0,
    Stroke = new SolidColorBrush(Color.FromArgb(255, 255, 0, 0)),
    StrokeThickness = 20,
    Visibility = Visibility.Visible
};
_body.MouseLeftButtonDown += _BodyLeftMouseButtonEventHandler;
PatyczakCanvas.Children.Add(_body);

以及操纵画布的示例: 滑块值更改方法:

_body.X2 = _body.X1 + DlugoscSlider.Value * Math.Sin(KatSlider.Value * Math.PI / 180.0);
_body.Y2 = _body.Y1 + DlugoscSlider.Value * Math.Cos(KatSlider.Value * Math.PI / 180.0);

我也尝试将线条添加到网格而不是画布,但是当我操纵线条时,它们绘制的宽度/高度并没有改变..

如果有人能帮助我,我将非常感激!

1 个答案:

答案 0 :(得分:1)

您应该更改或删除Width属性:

var _body = new Line
{
    X1 = 120,
    X2 = 120,
    Y1 = 20,
    Y2 = 75,
    Stroke = Brushes.Red,
    StrokeThickness = 20,
};

Width会影响该行的可见区域。

如果您使用更高的值,则可以看到效果,例如150

enter image description here

在您的代码中,Width小于X1X2,并且该行被绘制在可见区域之外。