C# GDI在控件上繪圖的方法
更新時間:2014年09月11日 11:33:34 投稿:shichen2014
這篇文章主要介紹了C# GDI在控件上繪圖的方法,包括了常見的鼠標事件及繪圖操作,需要的朋友可以參考下
本文以在chart控件上和窗體上畫矩形為例子講述了C# GDI在控件上繪圖的方法。分享給大家供大家參考。具體方法如下:
具體的實現(xiàn)方法就不多解釋了,備注很詳細,代碼也很簡單。
主要功能代碼如下:
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); //獲取兩個數(shù)中的大者或小者 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#實現(xiàn)Windows Form調用R進行繪圖與顯示的方法
- C#打印繪圖的實現(xiàn)方法
- 混合語言編程—C#使用原生的Directx和OpenGL繪圖的方法
- 深入c# GDI+簡單繪圖的具體操作步驟(四)
- 深入c# GDI+簡單繪圖的具體操作步驟(三)
- 深入c# GDI+簡單繪圖的具體操作步驟(二)
- 深入c# GDI+簡單繪圖的具體操作步驟(一)
- C#中GraphicsPath的AddString方法用法實例
- C#中GraphicsPath的Warp方法用法實例
- C#中GraphicsPath的Widen方法用法實例
- C#中GraphicsPath的Flatten方法用法實例
- C#實現(xiàn)動態(tài)數(shù)據(jù)繪圖graphic的方法示例
相關文章
c#使用Socket發(fā)送HTTP/HTTPS請求的實現(xiàn)代碼
這篇文章主要介紹了c#使用Socket發(fā)送HTTP/HTTPS請求的實現(xiàn)代碼,需要的朋友可以參考下2017-09-09C#巧用DateTime預設可選的日期范圍(如本年度、本季度、本月等)
這篇文章主要介紹了C#巧用DateTime預設可選的日期范圍,如本年度、本季度、本月等,感興趣的小伙伴們可以參考一下2016-04-04