C#矩形框沿直线移动

简介: C#中用GDT+的一系列方式,可以绘制各种图形:点,直线,圆形,矩形......C#中这些图形的绘制,一般教程的demo中给出的代码,是在Form1_Paint(object sender, PaintEventArgs e)函数中完成绘图。

C#中用GDT+的一系列方式,可以绘制各种图形:点,直线,圆形,矩形......

C#中这些图形的绘制,一般教程的demo中给出的代码,是在Form1_Paint(object sender, PaintEventArgs e)函数中完成绘图。这个函数是窗口一出来就调用。

如果我希望GUI界面上某个事件发生后再绘图(而不是窗口一上来就绘制),那就在对应的事件处理函数中调用绘图的函数代码。一般的事件处理函数不带PaintEventArgs参数,通过定义Graphics类型的全局变量g并调用窗体的CreateGraphics函数来解决。

下面给出一个简单的例子:一个简单窗体,界面上只有一个按钮btn,点击btn会在窗口指定位置产生一个绿色矩形框,并向右移动一定距离。
通过前述方式+timer控件,可以实现这个操作,代码如下:

    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
            g = this.CreateGraphics();
            rect = new Rectangle(x, y, width, height);
            timer1.Tick += new System.EventHandler(timer1_Tick);
            timer1.Interval = 100;
        }
        private Timer timer1 = new Timer();

        private Pen pen = new Pen(Color.Lime, 2); //绿色画笔
        private Pen DefaultPen = new Pen(Control.DefaultBackColor, 2); //颜色和窗体背景色相同的画笔

        int x = 100, y = 100;
        int width = 60, height = 60;
        private Rectangle rect;

        private Graphics g;

        private void button1_Click(object sender, EventArgs e) {
            //move2right();
            timer1.Enabled = true;
        }

        //整个矩形框整体向右移动两个距离
        private void move2right() {
            g.DrawRectangle(DefaultPen, rect);
            rect.X += 2;
            g.DrawRectangle(pen, rect);
            Invalidate(rect);
        }

        //计时器,用来让矩形持续移动
        public void timer1_Tick(object sender, EventArgs e) {
            if (rect.X < 410) {
                move2right();
            }
        }
    }

以上代码通过每次把前面一次绘制的矩形框颜色涂为窗体背景色,然后在新位置绘制新的矩形,缺点是如果窗口中除了矩形框还有别的图形,比如直线,那么这个先前绘制的之间会被擦除。

目录
相关文章
|
5月前
|
算法 前端开发
圆和矩形是否有重叠
圆和矩形是否有重叠
39 0
|
10天前
|
存储 算法
轮廓发现
轮廓发现
14 5
|
4月前
|
算法
[Halcon&拟合] 直线、矩形和圆的边缘提取
[Halcon&拟合] 直线、矩形和圆的边缘提取
139 0
|
4月前
|
算法 容器
[MFC] 将多个坐标点拟合出一条直线,并画出
[MFC] 将多个坐标点拟合出一条直线,并画出
29 0
|
11月前
|
数据可视化 数据处理
分面中添加不同的直线
分面中添加不同的直线
107 0
|
11月前
|
存储 API 图形学
OpenCV_11 轮廓检测:图像的轮廓+绘制轮廓+轮廓近似+边界矩形+椭圆拟合+直线拟合
轮廓检测指检测图像中的对象边界,更偏向于关注上层语义对象。如OpenCV中的findContours()函数, 它会得到每一个轮廓并以点向量方式存储,除此也得到一个图像的拓扑信息,即一个轮廓的后一个轮廓、前一个轮廓等的索引编号。
1124 0
|
计算机视觉
五、OpenCV绘制线、矩形、圆等基本几何形状
通过javaOpenCV中的Imgproc函数进行简单几何图形的绘制
99 0
五、OpenCV绘制线、矩形、圆等基本几何形状
075.绘制余弦曲线和直线的迭加
075.绘制余弦曲线和直线的迭加
49 0
|
算法 API 计算机视觉
OpenCV 轮廓周围绘制矩形框和圆形框
OpenCV 轮廓周围绘制矩形框和圆形框
182 0
OpenCV 轮廓周围绘制矩形框和圆形框