最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2014年09月11日 11:33:34   投稿:shichen2014  
這篇文章主要介紹了C# GDI在控件上繪圖的方法,包括了常見的鼠標(biāo)事件及繪圖操作,需要的朋友可以參考下

本文以在chart控件上和窗體上畫矩形為例子講述了C# GDI在控件上繪圖的方法。分享給大家供大家參考。具體方法如下:

具體的實(shí)現(xiàn)方法就不多解釋了,備注很詳細(xì),代碼也很簡單。

主要功能代碼如下:

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); //鼠標(biāo)第一點(diǎn) 
    public Point secondPoint = new Point(0, 0); //鼠標(biāo)第二點(diǎn) 
    public bool begin = false;  //是否開始畫矩形 
    /// <summary>
    /// 在from上畫矩形
    /// </summary>
    Graphics g;

    /// <summary>
    /// 在chart1控件上畫矩形
    /// </summary>
    Graphics g2;

    /// <summary>
    /// 在窗體上按下鼠標(biāo)事件
    /// </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>
    /// 在窗體上鼠標(biāo)移動開始繪圖
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void data_MouseMove(object sender, MouseEventArgs e)
    {
      if (begin)
      {
        //清除窗體繪圖面,相當(dāng)于刷新了一次窗體界面然后重新繪制
        g.Clear(this.BackColor);
        //獲取新的右下角坐標(biāo) 
        secondPoint = new Point(e.X, e.Y);
        //獲取兩個(gè)數(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>
    /// 鼠標(biāo)松開停止繪圖
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void data_MouseUp(object sender, MouseEventArgs e)
    {
      begin = false;
    }

    /// <summary>
    /// 在chart控件上移動鼠標(biāo)繪圖
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void chart1_MouseMove(object sender, MouseEventArgs e)
    {
      if (begin)
      {
        //重新在chart上面繪圖,此處不能用clear方法,clear會清除整個(gè)繪圖界面chart控件會被清除
        this.Refresh();
        //獲取新的右下角坐標(biāo) 
        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>
    /// 鼠標(biāo)松開停止繪圖
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void chart1_MouseUp(object sender, MouseEventArgs e)
    {
      begin = false;
    }

    /// <summary>
    /// 在chart控件上按下鼠標(biāo)
    /// </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#程序設(shè)計(jì)有所幫助

相關(guān)文章

  • c#實(shí)現(xiàn)幾種數(shù)據(jù)庫的大數(shù)據(jù)批量插入

    c#實(shí)現(xiàn)幾種數(shù)據(jù)庫的大數(shù)據(jù)批量插入

    這篇文章主要介紹了c#實(shí)現(xiàn)幾種數(shù)據(jù)庫的大數(shù)據(jù)批量插入,主要包括SqlServer、Oracle、SQLite和MySQL,有興趣的可以了解一下。
    2017-01-01
  • C#實(shí)現(xiàn)微信公眾號會員卡管理的示例代碼

    C#實(shí)現(xiàn)微信公眾號會員卡管理的示例代碼

    這篇文章主要介紹了C#實(shí)現(xiàn)微信公眾號會員卡管理的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • C#獲取程序文件相關(guān)信息的方法

    C#獲取程序文件相關(guān)信息的方法

    這篇文章主要介紹了C#獲取程序文件相關(guān)信息的方法,可實(shí)現(xiàn)獲取程序版本號、版權(quán)聲明、程序文本信息等,需要的朋友可以參考下
    2014-09-09
  • C# 中的委托詳細(xì)解析與完整應(yīng)用小結(jié)

    C# 中的委托詳細(xì)解析與完整應(yīng)用小結(jié)

    C#委托是一種類型安全的函數(shù)指針,允許將方法作為參數(shù)傳遞或賦值給變量,它在事件處理、回調(diào)和異步編程中廣泛應(yīng)用,本文詳細(xì)介紹了委托的基本概念、用法和高級應(yīng)用,感興趣的朋友一起看看吧
    2025-03-03
  • 深入淺析C#泛型類型

    深入淺析C#泛型類型

    這篇文章主要介紹C#泛型類型,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-02-02
  • C#讀寫JSON文件詳盡代碼示例與注釋解析

    C#讀寫JSON文件詳盡代碼示例與注釋解析

    JSON采用完全獨(dú)立于語言的文本格式,但是也使用了類似于C語言家族的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等),下面這篇文章主要給大家介紹了關(guān)于C#讀寫JSON文件詳盡代碼示例與注釋解析的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • C# Dictionary的使用實(shí)例代碼

    C# Dictionary的使用實(shí)例代碼

    C# Dictionary的使用實(shí)例代碼,需要的朋友可以參考一下
    2013-04-04
  • c#如何實(shí)現(xiàn)程序加密隱藏

    c#如何實(shí)現(xiàn)程序加密隱藏

    LiteDB是一個(gè)輕量級的嵌入式數(shù)據(jù)庫,它是用C#編寫的,適用于.NET平臺,這篇文章主要介紹了如何通過LiteDB將自己的程序進(jìn)行加密,感興趣的可以了解下
    2023-08-08
  • C#實(shí)現(xiàn)變量交換、斐波那契數(shù)列、質(zhì)數(shù)、回文方法合集

    C#實(shí)現(xiàn)變量交換、斐波那契數(shù)列、質(zhì)數(shù)、回文方法合集

    這篇文章介紹了C#實(shí)現(xiàn)變量交換、斐波那契數(shù)列、質(zhì)數(shù)、回文的方法合集,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • C#多線程系列之任務(wù)基礎(chǔ)(一)

    C#多線程系列之任務(wù)基礎(chǔ)(一)

    本文詳細(xì)講解了C#多線程的任務(wù)基礎(chǔ),文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02

最新評論

马鞍山市| 遂昌县| 潞城市| 普兰店市| 泊头市| 威远县| 莱西市| 伊通| 油尖旺区| 施秉县| 瑞昌市| 高要市| 彭阳县| 江阴市| 潮安县| 娄烦县| 浦东新区| 大悟县| 连州市| 灵丘县| 丹寨县| 永善县| 隆林| 依安县| 图们市| 青浦区| 凤城市| 海安县| 调兵山市| 卢龙县| 榆中县| 抚松县| 台东县| 达拉特旗| 丹东市| 碌曲县| 水富县| 无棣县| 平遥县| 贡觉县| 遂昌县|