本文以在chart控件上和窗体上画矩形为例子讲述了C# GDI在控件上绘图的方法。分享给大家供大家参考。具体方法如下:
具体的实现方法就不多解释了,备注很详细,代码也很简单。
主要功能代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Configuration; namespace WFApp2 { public partial class data : Form { public data() { InitializeComponent(); //窗体 g = this.CreateGraphics(); //chart控件 g2 = this.chart1.CreateGraphics(); } public Point firstPoint = new Point(0, 0); //鼠标第一点 public Point secondPoint = new Point(0, 0); //鼠标第二点 public bool begin = false; //是否开始画矩形 /// <summary> /// 在from上画矩形 /// </summary> Graphics g; /// <summary> /// 在chart1控件上画矩形 /// </summary> Graphics g2; /// <summary> /// 在窗体上按下鼠标事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void data_MouseDown(object sender, MouseEventArgs e) { begin = true; firstPoint = new Point(e.X, e.Y); } /// <summary> /// 在窗体上鼠标移动开始绘图 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void data_MouseMove(object sender, MouseEventArgs e) { if (begin) { //清除窗体绘图面,相当于刷新了一次窗体界面然后重新绘制 g.Clear(this.BackColor); //获取新的右下角坐标 secondPoint = new Point(e.X, e.Y); //获取两个数中的大者或小者 int minX = Math.Min(firstPoint.X, secondPoint.X); int minY = Math.Min(firstPoint.Y, secondPoint.Y); int maxX = Math.Max(firstPoint.X, secondPoint.X); int maxY = Math.Max(firstPoint.Y, secondPoint.Y); //画框 g.DrawRectangle(new Pen(Color.Red), minX, minY, maxX - minX, maxY - minY); //ControlPaint.DrawReversibleFrame(new Rectangle(minX, minY, maxX - minX, maxY - minY),this.BackColor,FrameStyle.Dashed); } } /// <summary> /// 鼠标松开停止绘图 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void data_MouseUp(object sender, MouseEventArgs e) { begin = false; } /// <summary> /// 在chart控件上移动鼠标绘图 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void chart1_MouseMove(object sender, MouseEventArgs e) { if (begin) { //重新在chart上面绘图,此处不能用clear方法,clear会清除整个绘图界面chart控件会被清除 this.Refresh(); //获取新的右下角坐标 secondPoint = new Point(e.X, e.Y); int minX = Math.Min(firstPoint.X, secondPoint.X); int minY = Math.Min(firstPoint.Y, secondPoint.Y); int maxX = Math.Max(firstPoint.X, secondPoint.X); int maxY = Math.Max(firstPoint.Y, secondPoint.Y); //画矩形 g2.DrawRectangle(new Pen(Color.Red), minX, minY, maxX - minX, maxY - minY); } } /// <summary> /// 鼠标松开停止绘图 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void chart1_MouseUp(object sender, MouseEventArgs e) { begin = false; } /// <summary> /// 在chart控件上按下鼠标 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void chart1_MouseDown(object sender, MouseEventArgs e) { begin = true; firstPoint = new Point(e.X, e.Y); } } }
希望本文所述对大家的C#程序设计有所帮助
本文向大家介绍C#使用GDI绘制直线的方法,包括了C#使用GDI绘制直线的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#使用GDI绘制直线的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。
本文向大家介绍C#使用GDI绘制矩形的方法,包括了C#使用GDI绘制矩形的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#使用GDI绘制矩形的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。
本文向大家介绍C# 使用GDI绘制雷达图的实例,包括了C# 使用GDI绘制雷达图的实例的使用技巧和注意事项,需要的朋友参考一下 最近项目要用C#实现画一个雷达图,搜了搜网上竟然找不到C#画雷达图的解决方案,那么自己实现一个吧 实现效果如下图: 代码如下: 把这个类粘贴到你的项目中,执行RadarDemo.Show();就会在你的根目录里生成雷达图了,为了方便理解怎么画出来的,我把画每一个步骤时的图
本文向大家介绍C#利用GDI绘制常见图形和文字,包括了C#利用GDI绘制常见图形和文字的使用技巧和注意事项,需要的朋友参考一下 废话不多说,我们先来认识一下这个GDI+,看看它到底长什么样。 GDI+:Graphics Device Interface Plus也就是图形设备接口,提供了各种丰富的图形图像处理功能;在C#.NET中,使用GDI+处理二维(2D)的图形和图像,使用DirectX处理三
本文向大家介绍C#使用GDI画圆的方法,包括了C#使用GDI画圆的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#使用GDI画圆的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。
本文向大家介绍C#绘制曲线图的方法,包括了C#绘制曲线图的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#绘制曲线图的方法。分享给大家供大家参考。具体如下: 1. 曲线图效果: 2. C#代码: 3. 数据缩小一个级别的效果: 4. 完整代码 DrawingCurve.cs: 希望本文所述对大家的C#程序设计有所帮助。