wpf 画图软件
wpf 画图控件 InkCanvas控件
添加如下:
<Window x:Class="WpfApp4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp4"
mc:Ignorable="d"
WindowStartupLocation="CenterScreen"
Title="MainWindow" Height="450" Width="800">
<Grid x:Name="MainPanel" Background="#FFD7E1E7">
<Grid.Resources>
<TransformGroup x:Key="ImageTransformResource">
<ScaleTransform />
<TranslateTransform />
</TransformGroup>
</Grid.Resources>
<Viewbox Stretch="Fill" Grid.RowSpan="2">
<Canvas Height="1077" Width="1920" RenderTransformOrigin="0.519,0.505" Background="#FFD7E1E7" >
<Button x:Name="pen" Height="59" Width="124" Canvas.Left="10">线笔</Button>
<Button x:Name="writer" Height="59" Width="124" Canvas.Left="137" Canvas.Top="-3">荧光笔</Button>
<Button x:Name="writingbrush" Height="59" Width="124" Canvas.Left="264" Canvas.Top="2">毛笔</Button>
<Button x:Name="eraser" Height="59" Width="124" Canvas.Left="397" Canvas.Top="-3">橡皮擦</Button>
<Button x:Name="Areatowipe" Height="59" Width="124" Canvas.Left="529" Canvas.Top="-4">区域擦</Button>
<Button x:Name="cls" Height="59" Width="124" Canvas.Left="659" Canvas.Top="-3" RenderTransformOrigin="-0.256,0.708">清屏</Button>
<Button x:Name="red" Height="59" Width="100" Canvas.Left="788" Canvas.Top="-4" RenderTransformOrigin="-0.256,0.708">红色</Button>
<Button x:Name="blue" Height="59" Width="91" Canvas.Left="893" Canvas.Top="-4" RenderTransformOrigin="-0.256,0.708">蓝色</Button>
<Button x:Name="black" Height="59" Width="100" Canvas.Left="984" RenderTransformOrigin="-0.256,0.708" Canvas.Top="-3">黑色</Button>
<Button x:Name="green" Height="59" Width="94" Canvas.Left="1089" RenderTransformOrigin="-0.256,0.708" Canvas.Top="2">绿色</Button>
<ListBox Canvas.Left="1224" Canvas.Top="15" >大小:</ListBox>
<InkCanvas Canvas.ZIndex="4" Name="inkContent" Grid.RowSpan="2"
UseCustomCursor="True"
Cursor="{Binding CurrentCursor,ElementName=winWhite,Mode=OneWay}"
EditingModeInverted="Ink"
EditingMode="{Binding CurrentEditMode,ElementName=winWhite,Mode=OneWay}"
DefaultDrawingAttributes="{Binding CurrentPen,ElementName=winWhite,Mode=OneWay}"
Height="1008" Width="1910" Canvas.Left="10" Canvas.Top="59" >
</InkCanvas>
<Slider Canvas.Left="1317" Canvas.Top="7" Height="47" Width="565"/>
</Canvas>
</Viewbox>
</Grid>
</Window>
效果图片:
cs代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Xps.Packaging;
using System.Windows.Forms;
using System.Windows.Ink;
namespace WpfApp4
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
DrawingAttributes drawingAttributes;
public MainWindow()
{
InitializeComponent();
drawingAttributes = new DrawingAttributes();
}
private void Pen_Click(object sender, RoutedEventArgs e)
{
inkContent.EditingMode = InkCanvasEditingMode.Ink;
inkContent.DefaultDrawingAttributes = drawingAttributes;
drawingAttributes.Color = Colors.Black;
}
private void Writer_Click(object sender, RoutedEventArgs e)
{
inkContent.DefaultDrawingAttributes = drawingAttributes;
drawingAttributes.Color = Colors.Red;
drawingAttributes.Width = 15;
drawingAttributes.Height = 5;
drawingAttributes.StylusTip = StylusTip.Rectangle;
drawingAttributes.FitToCurve = true;
drawingAttributes.IsHighlighter = false;
drawingAttributes.IgnorePressure = true;
}
private void Writingbrush_Click(object sender, RoutedEventArgs e)
{
drawingAttributes.Color = Colors.Black;
inkContent.DefaultDrawingAttributes.Width = 20;
inkContent.DefaultDrawingAttributes.Height = 10;
}
private void Eraser_Click(object sender, RoutedEventArgs e)
{
inkContent.EditingMode = InkCanvasEditingMode.EraseByPoint;
}
private void Areatowipe_Click(object sender, RoutedEventArgs e)
{
inkContent.EditingMode = InkCanvasEditingMode.EraseByStroke;
}
private void Cls_Click(object sender, RoutedEventArgs e)
{
inkContent.Strokes.Clear();
}
private void Red_Click(object sender, RoutedEventArgs e)
{
inkContent.DefaultDrawingAttributes = drawingAttributes;
drawingAttributes.Color = Colors.Red;
}
private void Blue_Click(object sender, RoutedEventArgs e)
{
inkContent.DefaultDrawingAttributes = drawingAttributes;
drawingAttributes.Color = Colors.Blue;
}
private void Black_Click(object sender, RoutedEventArgs e)
{
inkContent.DefaultDrawingAttributes = drawingAttributes;
drawingAttributes.Color = Colors.Black;
}
private void Green_Click(object sender, RoutedEventArgs e)
{
inkContent.DefaultDrawingAttributes = drawingAttributes;
drawingAttributes.Color = Colors.Green;
}
private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
if (inkContent != null)
inkContent.DefaultDrawingAttributes.Width = inkContent.DefaultDrawingAttributes.Height = slider.Value;
}
}
}
实现效果: