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>
效果图片:

wpf 画图软件

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;
        }
    }
}
实现效果:

wpf 画图软件