国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C# GDI在控件上繪圖的方法

2020-01-24 02:25:54
字體:
來源:轉載
供稿:網友

本文以在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#程序設計有所幫助

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桂平市| 黄浦区| 隆化县| 四子王旗| 福安市| 巴彦淖尔市| 定州市| 焦作市| 彭山县| 鄂托克旗| 达州市| 临沧市| 嘉禾县| 高安市| 衡水市| 博野县| 商河县| 临洮县| 皮山县| 栾川县| 伽师县| 和龙市| 同仁县| 和顺县| 巴马| 图们市| 林口县| 北辰区| 伊金霍洛旗| 平罗县| 卓尼县| 庄浪县| 定结县| 黔江区| 太和县| 拉孜县| 马龙县| 灵武市| 安康市| 榆中县| 平凉市|