我目前正在尝试以 Visual Studio WPF 形式制作一个程序,该程序使用鼠标绘制线条,就像在油漆中一样。目前它正在绘制相同的旧线并继续绘制它,但我想在每次按下鼠标左键时画一条新线。这是MainWindows.xaml.cs代码及其外观:
namespace DrawingLines
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private PathFigure _pathFigure = new PathFigure();
PathFigureCollection _pathCollection = new PathFigureCollection();
PathSegmentCollection _segments = new PathSegmentCollection();
private PathGeometry _pathGeometry = new PathGeometry();
private void Window_Loaded(object sender, RoutedEventArgs e)
{
_pathFigure.Segments = _segments;
_pathCollection.Add(_pathFigure);
_pathGeometry.Figures = _pathCollection;
myPath.Data = _pathGeometry;
}
private void Window_MouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
LineSegment segment = new LineSegment();
segment.Point = e.GetPosition(this);
_pathFigure.Segments.Add(segment);
}
}
private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
_pathFigure.StartPoint = e.GetPosition(this);
}
//private void Window_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
//{
//}
private void button1_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
}
这是MainWindow.xmal代码:
<Window x:Class="DrawingLines.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Joonistamine" Height="350" Width="525" Loaded="Window_Loaded" MouseMove="Window_MouseMove" MouseLeftButtonDown="Window_MouseLeftButtonDown" MouseRightButtonDown="Window_MouseRightButtonDown">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="53*" />
<RowDefinition Height="258*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="124*" />
<ColumnDefinition Width="379*" />
</Grid.ColumnDefinitions>
<Path Stroke="Black" StrokeThickness="1" Name="myPath" Grid.ColumnSpan="2" Grid.RowSpan="2" />
<Button Content="Exit" Height="25" HorizontalAlignment="Left" Name="button1" VerticalAlignment="Top" Width="46" Click="button1_Click" BorderBrush="Red" Foreground="#FFFF1A1A" />
</Grid>
我究竟做错了什么?