MainWindow class:
public partial class MainWindow : Window
{
DrawCircle dc;
DrawLine dl;
public MainWindow()
{
InitializeComponent();
}
private void cVas_MouseMove(object sender, MouseEventArgs e)
{
switch (rbLine.IsChecked)
{
case true:
if (dl != null)
dl.MouseMove(Mouse.GetPosition(cVas));
break;
default:
if (dc != null)
dc.MouseMove(Mouse.GetPosition(cVas));
break;
}
}
private void cVas_MouseDown(object sender, MouseButtonEventArgs e)
{
switch (rbLine.IsChecked)
{
case true:
dl = new DrawLine(this);
dl.MouseDown(Mouse.GetPosition(cVas));
break;
default:
dc = new DrawCircle(this);
dc.MouseDown(Mouse.GetPosition(cVas));
break;
}
}
private void cVas_MouseUp(object sender, MouseButtonEventArgs e)
{
dc = null;
dl = null;
}
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
cVas.Children.Clear();
}
}
and here is the DrawLine class (the DrawCircle is similar to this):MainWindow class:
class DrawLine
{
private Line myLine;
MainWindow mw;
public DrawLine(MainWindow mw)
{
this.mw = mw;
}
public void MouseDown(Point mousePoint)
{
myLine = new Line();
myLine.Stroke = Brushes.Black;
myLine.StrokeThickness = 2;
myLine.X1 = myLine.X2 = mousePoint.X;
myLine.Y1 = myLine.Y2 = mousePoint.Y;
mw.cVas.Children.Add(myLine);
}
public void MouseUp()
{
myLine = null;
}
public void MouseMove(Point mousePoint)
{
if (myLine != null)
{
(mw.cVas.Children[mw.cVas.Children.IndexOf(myLine)] as Line).X2 = mousePoint.X;
(mw.cVas.Children[mw.cVas.Children.IndexOf(myLine)] as Line).Y2 = mousePoint.Y;
}
}
}
public partial class MainWindow : Window
{
DrawCircle dc;
DrawLine dl;
public MainWindow()
{
InitializeComponent();
}
private void cVas_MouseMove(object sender, MouseEventArgs e)
{
switch (rbLine.IsChecked)
{
case true:
if (dl != null)
dl.MouseMove(Mouse.GetPosition(cVas));
break;
default:
if (dc != null)
dc.MouseMove(Mouse.GetPosition(cVas));
break;
}
}
private void cVas_MouseDown(object sender, MouseButtonEventArgs e)
{
switch (rbLine.IsChecked)
{
case true:
dl = new DrawLine(this);
dl.MouseDown(Mouse.GetPosition(cVas));
break;
default:
dc = new DrawCircle(this);
dc.MouseDown(Mouse.GetPosition(cVas));
break;
}
}
private void cVas_MouseUp(object sender, MouseButtonEventArgs e)
{
dc = null;
dl = null;
}
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
cVas.Children.Clear();
}
}
and the XAML, too:DrawLine class (the DrawCircle is similar to this):
<Window x:Class="WPFdraw.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" KeyDown="Window_KeyDown">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="20"></RowDefinition>
</Grid.RowDefinitions>
<Canvas Grid.Row="0" Background="Transparent" Name="cVas" Width="Auto" Height="Auto" MouseMove="cVas_MouseMove" MouseDown="cVas_MouseDown" MouseUp="cVas_MouseUp"></Canvas>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<RadioButton Grid.Column="0" GroupName="tool" IsChecked="True" Name="rbLine" VerticalAlignment="Center">Line</RadioButton>
<RadioButton Grid.Column="1" GroupName="tool" Name="rbCircle" VerticalAlignment="Center">Circle</RadioButton>
<Button Name="btn" Grid.Column="2" Content="klikk" ></Button>
</Grid>
</Grid>
</Window>
class DrawLine
{
private Line myLine;
MainWindow mw;
public DrawLine(MainWindow mw)
{
this.mw = mw;
}
public void MouseDown(Point mousePoint)
{
myLine = new Line();
myLine.Stroke = Brushes.Black;
myLine.StrokeThickness = 2;
myLine.X1 = myLine.X2 = mousePoint.X;
myLine.Y1 = myLine.Y2 = mousePoint.Y;
mw.cVas.Children.Add(myLine);
}
public void MouseUp()
{
myLine = null;
}
public void MouseMove(Point mousePoint)
{
if (myLine != null)
{
(mw.cVas.Children[mw.cVas.Children.IndexOf(myLine)] as Line).X2 = mousePoint.X;
(mw.cVas.Children[mw.cVas.Children.IndexOf(myLine)] as Line).Y2 = mousePoint.Y;
}
}
}
Thanks for the answers!XAML:
<Window x:Class="WPFdraw.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" KeyDown="Window_KeyDown">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="20"></RowDefinition>
</Grid.RowDefinitions>
<Canvas Grid.Row="0" Background="Transparent" Name="cVas" Width="Auto" Height="Auto" MouseMove="cVas_MouseMove" MouseDown="cVas_MouseDown" MouseUp="cVas_MouseUp"></Canvas>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<RadioButton Grid.Column="0" GroupName="tool" IsChecked="True" Name="rbLine" VerticalAlignment="Center">Line</RadioButton>
<RadioButton Grid.Column="1" GroupName="tool" Name="rbCircle" VerticalAlignment="Center">Circle</RadioButton>
<Button Name="btn" Grid.Column="2" Content="klikk" ></Button>
</Grid>
</Grid>
</Window>