C# 画线 Draw a Line
来源:互联网 发布:ssh管理系统源码 编辑:程序博客网 时间:2024/05/21 13:54
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace BCSVClient{ /// <summary> /// 窗口定义 /// </summary> public partial class LineTest : Form { public LineTest() { drawPanel.BackColor = Color.White; drawPanel.Cursor = Cursors.Cross; drawPanel.Dock = DockStyle.Fill; drawPanel.MouseDown += new MouseEventHandler(drawPanel_MouseDown); drawPanel.MouseUp += new MouseEventHandler(drawPanel_MouseUp); drawPanel.MouseMove += new MouseEventHandler(drawPanel_MouseMove); drawPanel.Paint += new PaintEventHandler(drawPanel_Paint); Controls.Add(drawPanel); } /// <summary> /// 线条对象 /// </summary> class Line { /// <summary> /// 建立线条对象,并设置起点 /// </summary> /// <param name="startPoint">此线条的起点</param> public Line(Point startPoint) { StartPoint = startPoint; EndPoint = startPoint; } public Point StartPoint = Point.Empty; public Point EndPoint = Point.Empty; } public class DrawPanel : Control { public DrawPanel() { this.DoubleBuffered = true; this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw, true); } } /// <summary> /// 用于保存绘出线条的集合 /// </summary> private List<Line> lines = new List<Line>(); /// <summary> /// 用于保存当前正在绘制的线条 /// </summary> private Line drawingLine = null; /// <summary> /// 用于显示绘图的面板组件 /// </summary> private DrawPanel drawPanel = new DrawPanel(); /// <summary> /// 在绘图区释放鼠标,结束当前线条绘制 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void drawPanel_MouseUp(object sender, MouseEventArgs e) { if (drawingLine == null) return; drawingLine.EndPoint = e.Location; drawingLine = null; } /// <summary> /// 在绘图区按下鼠标,开始绘制新线条 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void drawPanel_MouseDown(object sender, MouseEventArgs e) { drawingLine = new Line(e.Location); lines.Add(drawingLine); } /// <summary> /// 在绘图区移动鼠标时,如果正在绘制新线条,就更新绘制面板 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void drawPanel_MouseMove(object sender, MouseEventArgs e) { if (drawingLine != null) { drawingLine.EndPoint = e.Location; drawPanel.Invalidate(); } } /// <summary> /// 绘制效果到面板 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void drawPanel_Paint(object sender, PaintEventArgs e) { Bitmap bp = new Bitmap(drawPanel.Width, drawPanel.Height); // 用于缓冲输出的位图对象 Graphics g = Graphics.FromImage(bp); g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; // 消锯齿(可选项) Pen p = new Pen(Color.Black); foreach (Line line in lines) { if (line == drawingLine) { // 当前绘制的线条是正在鼠标定位的线条 p.Color = Color.Blue; } else { p.Color = Color.Black; } g.DrawLine(p, line.StartPoint, line.EndPoint); } // 将缓冲位图绘制到输出 e.Graphics.DrawImage(bp, Point.Empty); } }}
0 0
- C# 画线 Draw a Line
- Draw Line and Bar Chart with Matplotlib 画线和图表
- Draw Line
- Draw Line
- Java : how to draw a line in thickness
- C# Graphic - DrawLine - draw line and move it
- line renderer 画线
- pygame.draw.line
- CG : Draw Line And Draw Circle
- C# Tips: Draw a data table in console
- unity使用line renderer画线
- draw a pig :)
- Draw a Clover
- Draw with a Canvas
- Draw with a Canvas
- Draw a Parametric Curve
- 【OpenGL】Draw a Circle
- How to draw a rubber band rectangle or a focus rectangle in Visual C#
- windows 如何查看端口占用情况
- Mac 上没有合并的概念,只有替换
- android 中关于Sqlite 表的创建 修改 删除
- 启动Tomcat报错Server Tomcat......
- 自定义viewgroup类似锤子系统
- C# 画线 Draw a Line
- Linux 下gedit编辑器的使用
- 2、TCP套接字
- 正则表达式大全分享
- __attribute__((constructor)|(destructor)(PRIORITY))
- hibernate性能优化
- 设计模式初探1——策略模式(Strategy Pattern)
- 上海传智程序猿携手设计狮美女雨中烧烤!!
- JSTL中EL标签与Struts2中OGNL标签在JSP页面上的区别