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();
            }
        }
    }

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

目录
相关文章
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机(SVM)算法
【5月更文挑战第27天】在数据科学和人工智能的领域中,支持向量机(SVM)是一种强大的监督学习模型,它基于统计学习理论中的VC维理论和结构风险最小化原理。本文将详细介绍SVM的工作原理、核心概念以及如何在实际问题中应用该算法进行分类和回归分析。我们还将讨论SVM面临的挑战以及如何通过调整参数和核技巧来优化模型性能。
|
网络协议 Java Linux
如何解决“连接超时”的问题
当遇到“连接超时”问题时,可尝试以下方法:检查网络连接、重启路由器、清除浏览器缓存、关闭防火墙或杀毒软件、更改DNS服务器等。若问题依旧,建议联系网络服务提供商或技术人员寻求帮助。
5181 6
|
人工智能 自然语言处理 小程序
阿里通义音频生成大模型 FunAudioLLM 开源!
声音包含丰富的个体特征及情感情绪信息,对话作为人类最常使用亲切自然的交互模式,是连接人与智能世界至关重要的环节。
|
监控 关系型数据库 MySQL
CentOS 7系统安装配置Zabbix 5.0LTS 步骤
CentOS 7系统安装配置Zabbix 5.0LTS 步骤 查看Zabbix官方教程(重点) 打开官方网址:https://www.zabbix.com/cn,点击ZABBIX下载。 选择你的Zabbix服务器的平台,比如:Zabbix5.0 LTS、CentOS 7、Mysql、Apache等。 往下滑,查看安装和配置Zabbix教程
1169 1
|
JavaScript
VUE element-ui 之table表格表头插入输入框
VUE element-ui 之table表格表头插入输入框
1291 0
VUE element-ui 之table表格表头插入输入框
|
1天前
|
云安全 人工智能 自然语言处理
|
6天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
314 116
|
8天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
610 53
Meta SAM3开源:让图像分割,听懂你的话