zoukankan      html  css  js  c++  java
  • C# GDI在控件上绘图

    本文以以在chart控件上和窗体上画矩形为例子

     不多解释了,代码很简单。

    还有一些童鞋要别的源码,给我发邮箱吧

    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);
            }
    
            
    
        }
    }
  • 相关阅读:
    vue-cli + webpack 多页面实例配置优化方法
    Python Web(1):建立第一个Web项目
    C# winform用sharpGL(OpenGl)解析读取3D模型obj
    CSS outline 属性
    sqlserver查询两个值是否相等
    vue v-for(数组遍历)
    内存查看工具RAMMAP说明
    linux 入门
    linux 内核根文件系统
    linux 命令
  • 原文地址:https://www.cnblogs.com/gc2013/p/3965711.html
Copyright © 2011-2022 走看看