You can paint by dragging your fingers over the screen and you change color by “dipping your fingers in the paint buckets.
The app listens to the ‘MouseMove’-event and tracks you’re fingers position and add’s line-objects to a canvas control. To make it possible to change color by ”dipping your fingers in the paint buckets” I’ve added a transparent ellipse control on top of every “paint bucket’, and connected up the ‘MouseLeftButtonDown’ event. Check out the source code below.
Xaml code:
<Grid x:Name="grid" Background="Transparent">
<Image x:Name="imgBackground" Source="bg.png" Height="800" Width="500" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="0,0,0,0" />
<TextBlock x:Name="PageTitle" Foreground="#FF5B5B5B" Text="fingerpaint" Margin="21,10,0,28" Style="{StaticResource PhoneTextTitle1Style}" Grid.ColumnSpan="3" />
<Image x:Name="btnDelete" Source="delete.png" Opacity="0.75" Height="55" Width="55" VerticalAlignment="Top" HorizontalAlignment="Right" MouseLeftButtonDown="btnDelete_MouseLeftButtonDown" Grid.Column="1" Grid.ColumnSpan="2" />
<Canvas x:Name="paint" Background="Transparent" Width="500" Height="448" Margin="0,108,-20,244" Grid.ColumnSpan="3" />
<Ellipse x:Name="blue" Fill="#00F4F4F5" Height="86" Margin="114,0,115,38" Stroke="Transparent" VerticalAlignment="Bottom"/>
<Ellipse x:Name="yellow" Fill="#00F4F4F5" Height="44" Margin="176,0,100,137" Stroke="Transparent" VerticalAlignment="Bottom"/>
<Ellipse x:Name="black" Fill="#00F4F4F5" Height="45" Margin="0,0,78,151" Stroke="Transparent" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="94" Grid.ColumnSpan="2" />
<Ellipse x:Name="pink" Fill="#00F4F4F5" Height="73" Margin="0,0,57,66" Stroke="Transparent" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="130" Grid.ColumnSpan="2" />
</Grid>
C# code:
namespace fingerpaint
{
public partial class MainPage : PhoneApplicationPage
{
private Point point;
private Point old_point;
private bool draw = false;
private string colour = "white";
public MainPage()
{
InitializeComponent();
old_point = point;
colour = "blue";
}
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
blue.MouseLeftButtonDown += new MouseButtonEventHandler(selectColor);
yellow.MouseLeftButtonDown += new MouseButtonEventHandler(selectColor);
black.MouseLeftButtonDown += new MouseButtonEventHandler(selectColor);
pink.MouseLeftButtonDown += new MouseButtonEventHandler(selectColor);
paint.MouseMove += new MouseEventHandler(FingerMove);
paint.MouseLeftButtonUp += new MouseButtonEventHandler(FingerUp);
paint.MouseLeftButtonDown += new MouseButtonEventHandler(FingerDown);
}
void selectColor(object sender, MouseButtonEventArgs e)
{
Ellipse ellipse = sender as Ellipse;
colour = ellipse.Name;
}
void FingerMove(object sender, MouseEventArgs e)
{
if (draw)
{
point = e.GetPosition(paint);
Line line = new Line();
if (colour == "blue")
line.Stroke = new SolidColorBrush(Color.FromArgb(255, 41, 159, 227));
else if (colour == "yellow")
line.Stroke = new SolidColorBrush(Color.FromArgb(255, 226, 228, 43));
else if (colour == "black")
line.Stroke = new SolidColorBrush(Color.FromArgb(255, 42, 42, 42));
else if (colour == "pink")
line.Stroke = new SolidColorBrush(Color.FromArgb(255, 228, 29, 180));
line.X1 = point.X;
line.Y1 = point.Y;
line.X2 = old_point.X;
line.Y2 = old_point.Y;
line.StrokeStartLineCap = PenLineCap.Round;
line.StrokeEndLineCap = PenLineCap.Round;
line.StrokeThickness = 15;
line.Opacity = 0.5;
paint.Children.Add(line);
old_point = point;
}
old_point = point;
}
void FingerUp(object sender, MouseButtonEventArgs e)
{
draw = false;
}
void FingerDown(object sender, MouseButtonEventArgs e)
{
point = e.GetPosition(paint);
old_point = point;
draw = true;
}
private void btnDelete_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
paint.Children.Clear();
}
}
}