gpt4 book ai didi

wpf - 我必须如何更改我的代码以制作多个线条形状?

转载 作者:行者123 更新时间:2023-12-04 19:48:27 24 4
gpt4 key购买 nike

我想在 WPF 中的“触摸”应用程序中画线并编写了以下代码:

XAML(部分):

<Canvas x:Name="MainCanvas"
IsManipulationEnabled="True"
TouchDown="MainCanvas_TouchDown"
TouchUp="MainCanvas_TouchUp">

C#:

public partial class MainWindow : Window
{
Line myLine = new Line();

public MainWindow()
{
InitializeComponent();
}

public void MainCanvas_TouchDown(object sender, TouchEventArgs e)
{
myLine.Stroke = System.Windows.Media.Brushes.LightSteelBlue;
myLine.StrokeThickness = 2;
// Line's starting point
myLine.X1 = e.GetTouchPoint(this).Position.X;
myLine.Y1 = e.GetTouchPoint(this).Position.Y;
}

public void MainCanvas_TouchUp(object sender, TouchEventArgs e)
{
// Line's ending point
myLine.X2 = e.GetTouchPoint(this).Position.X;
myLine.Y2 = e.GetTouchPoint(this).Position.Y;

MainCanvas.Children.Add(myLine);


}
}

有了这个,我只能画一条线。如果我尝试绘制另一个,应用程序就会崩溃。

最佳答案

对于要绘制的每条线,您都必须创建一个新的 Line 实例。在您当前的代码中,您只有一个 Line 实例,但该实例恰好代表显示的一行。

与您使用各种对象逐步将图形元素绘制到绘图表面的其他图形工具包不同,WPF 的工作方式类似于矢量图形:您使用的每个对象都是一个图形元素;对于两个相同的图形元素,您将需要两个具有相同属性的对象。

因此,当您第二次添加相同的图形对象时,在这一行中:

MainCanvas.Children.Add(myLine);

将抛出异常,因为每个图形元素只能添加一次。

当你想添加任意数量的行时,将你的行存储在一个列表中并在触地事件。在触摸事件中,设置新实例的第二个点(列表中的最后一个元素)。

请注意,这不是关于 C#,而是关于 WPF。 (换句话说,从未使用过 WPF 的 C# 专家无法告诉您,但从未使用过 C#(例如,总是使用 VB.NET)的 WPF 开发人员可能会有所帮助。

关于wpf - 我必须如何更改我的代码以制作多个线条形状?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16641031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com