之前一直用GDI绘图,后面公司要求使用WPF,网上WPF资料太少(可能自己没找到吧),自己写了个测试用,可以拖动。
前端代码
<Window x:Class="Wpf绘图.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="600" Width="800" Loaded="Window_Loaded_1"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="30"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <ToolBar Grid.Row="0"> <Label Name="moushPonit" Foreground="Red">11</Label> </ToolBar> <Canvas Grid.Row="1" Name="MainCanvas" Background="#FFBBBCBF" MouseMove="MainCanvas_MouseMove" MouseLeftButtonDown="MainCanvas_MouseLeftButtonDown" MouseLeftButtonUp="MainCanvas_MouseLeftButtonUp" SizeChanged="MainCanvas_SizeChanged" ClipToBounds="True"> <Canvas.RenderTransform> <TransformGroup> <ScaleTransform x:Name="sfr" /> <TranslateTransform x:Name="tlt" /> </TransformGroup> </Canvas.RenderTransform> </Canvas> </Grid> </Window>
后台代码
using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; 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.Shapes; namespace Wpf绘图 { /// <summary> /// Window1.xaml 的交互逻辑 /// </summary> public partial class Window1 : Window { /// <summary> /// 画板宽度 /// </summary> double BoardWidth { get; set; } /// <summary> /// 画板高度 /// </summary> double BoardHeight { get; set; } /// <summary> /// 垂直(纵向)边距(画图区域距离左右两边长度) /// </summary> double VerticalMargin { get; set; } /// <summary> /// 平行(横向)边距(画图区域距离左右两边长度) /// </summary> double HorizontalMargin { get; set; } /// <summary> /// 水平刻度间距像素 /// </summary> double horizontalBetween { get; set; } /// <summary> /// 垂直刻度间距像素 /// </summary> double verticalBetween { get; set; } /// <summary> /// x轴最大值 /// </summary> public double MaxX { get; set; } /// <summary> /// y轴最大值 /// </summary> public double MaxY { get; set; } /// <summary> /// x轴最小值 /// </summary> public double MinX { get; set; } /// <summary> /// y轴最小值 /// </summary> public double MinY { get; set; } /// <summary> /// 图表区域宽度 /// </summary> double ChartWidth; /// <summary> /// 图表区域高度 /// </summary> double CharHeight; /// <summary> /// 画图区域起点 /// </summary> Point StartPostion; /// <summary> /// 画图区域终点 /// </summary> Point EndPostion; /// <sum