wpf画图

发布时间 2023-12-11 09:17:16作者: IGary

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
using System.Windows;
using System.Windows.Media.Imaging;
using System.Windows.Controls.Ribbon;


namespace WPFTest
{
public class DrawControl : FrameworkElement
{
private List<Visual> visuals = new List<Visual>();
private DrawingVisual Layer;
private List<Point> list_points = new List<Point>();
private Pen pen = new Pen(Brushes.Blue, 2);

public DrawControl()
{
pen.Freeze();
Layer = new DrawingVisual();
visuals.Add(Layer);
}
private void DrawContent()
{
var dc = Layer.RenderOpen();

for (int i = 0; i < list_points.Count - 1; i++)
{
dc.DrawLine(pen, list_points[i], list_points[i + 1]);
}

//载资源文件
var bmp = new BitmapImage(new Uri("pack://application:,,,/images/IO图.png"));
var rect = new Rect();
rect.Width = bmp.Width;
rect.Height = bmp.Height;
dc.DrawImage(bmp, rect);
//dc.Pop();
dc.Close();
}

protected override int VisualChildrenCount => visuals.Count;
protected override Visual GetVisualChild(int index)
{
return visuals[index];
}

protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo)
{
DrawContent();
}
public void SetData(List<Point> list)
{
list_points.Clear();
list_points.AddRange(list);
}
}
}