我正在探索WPF + C#的图形功能。与XAML划清界限可以达到预期效果。好。用C#代码画一条简单的线会使事情“奇怪”。坐标显示not其中他们应该是。为什么?以下代码应实现从(0,0)到(宽度,高度)的对角线该行的容器面板。
private void buttonStart_Click(object sender, RoutedEventArgs e)
{
Line line1 = new Line
{
Stroke = Brushes.Black
};
Thickness thickness = new Thickness(10, -10, 36, 250);
line1.Margin = thickness;
line1.Visibility = Visibility.Visible;
line1.StrokeThickness = 4;
line1.X1 = 0;
line1.Y1 = 0;
line1.X2 = MainGrid.ActualWidth;
line1.Y2 = MainGrid.ActualHeight;
line1.HorizontalAlignment = HorizontalAlignment.Left;
MainGrid.Children.Add(line1);
}
您使用什么面板都没关系:画布,底座面板,网格,堆栈面板,我观察到相同奇怪而烦人的行为。Not showing the diagonal. Not beginning at origin-vertex (0,0): (left,top)
您的问题是Thickness(10, -10, 36, 250)
。这种任意的余量切断了其余部分。这是代码的简化版本,可以正确地从左上角到右下角画一条线:
private void buttonStart_Click(object sender, RoutedEventArgs e)
{
Line line1 = new Line
{
Stroke = Brushes.Black,
StrokeThickness = 4,
X1 = 0,
Y1 = 0,
X2 = MainGrid.ActualWidth,
Y2 = MainGrid.ActualHeight
};
MainGrid.Children.Add(line1);
}
请注意,由于默认情况下Visibility = Visibility.Visible
(与大多数其他元素一样)是可见的,因此保留了Line
。
您可以通过简单的路径语句轻松完成此操作-使用Stretch =“ Fill”,因此无需担心尺寸
<Path Stroke="Black" StrokeThickness="4" Data="M 0,0 L 1,1" Stretch="Fill" />