基于winform的五子棋机器人系统开发 (更新中ing)

一、实物硬件表拟定

笔记本电脑、正运动控制器、三个汇川伺服驱动器、三个滑动模组

二、软件开发

注意细节:

①主界面使用三个panel容器进行构建

pannel容器设置属性参数:(1) dock 

② 添加自定义控件:首先创建类库,删除默认文件后,增加自定义控件;同时在自定义控件中进行增加属性,以便在主窗体中直接修改自定义属性;添加图片资源方式:属性->添加现有文件

快捷方式:propfull->直接创字段和对应的属性

1. 创建winform窗体程序

1.1.窗体参数设置如下:

①  修改窗体size属性,设置为1366,760

②  修改formbodystyle属性,选择none,即“无边框”

1.2.插入三个panel容器:

①  菜单panel:size属性设置为1366,80;dock属性设置为top;backcolor属性设置为blue;

其中dock属性可以控制 控件布局位置

② 显示panel:size属性设置为1366,640;dock属性设置为fill;

③ 底部panel:size属性设置为13866,40;dock属性设置为buttom,backcolor属性设置为blue;

以上窗体参数设置好以后,如图所示:

2. 创建自定义用户控件(方便后期项目直接进行调用)

2.1. 创建自定义控件

① 解决方案->新建类库, 在新建的类库文件下创建自定义控件

2.2. 创建资源图像文件夹

在classliabrary项目下创建“resource”文件夹,同时在该文件下存放一张图像,并点击生成项目

2.3. 添加label和picturebox控件

在自定义控件上添加一个picturebox控件和label控件(图像位于自定义控件的上部分,label位于自定义控件的下部分),并选择resource文件夹中添加的图像

2.4.给自定义属性添加属性参数

① 增加“自定义控件名字”和“自定义控件图像”两个属性参数

        private string buttonname="主界面";public string Buttonname{get { return buttonname; }set { buttonname = value;this.label1.Text = buttonname;
}}private Image image=Properties.Resources._1_removebg_preview;public Image backimage{get { return image; }set { image = value;this.pictureBox1.Image = backimage;}}

 添加完成属性程序以后,点击项目生成;当在其他界面插入自定义控件时,其对应的“backimage”和"buttonname"属性会出现控件属性列表中

 

② 增加控件是否被激活属性

通过isactive属性来控制自定义控件显示的状态,如果自定应控件的isactive属性修改,都会触发onpaiter函数,对控件显示进行重写绘制;目前指定的规则是当isactive属性被设置为true,则自定义属性底部被画上一个白色矩形

private bool isbutactive;[Browsable(true)][Category("自定义属性")][Description("激活按钮")]public bool Isbutactive{get { return isbutactive; }set {isbutactive = value;this.Invalidate();}}private Color activeColor = Color.FromArgb(137, 207, 240);[Browsable(true)][Category("自定义属性")][Description("激活方块颜色")]public Color ActiveColor{get { return activeColor; }set{activeColor = value;this.Invalidate();}}private int activeHeight = 4;[Browsable(true)][Category("自定义属性")][Description("激活方块高度")]public int ActiveHeight{get { return activeHeight; }set{activeHeight = value;this.Invalidate();}}private int activeGap = 0;[Browsable(true)][Category("自定义属性")][Description("激活方块边距")]public int ActiveGap{get { return activeGap; }set{activeGap = value;this.Invalidate();}}protected override void OnPaint(PaintEventArgs e){base.OnPaint(e);Graphics graphics = e.Graphics;Rectangle rectangle = new Rectangle(activeGap, this.Height - activeHeight, this.Width - 2 * activeGap, activeHeight);graphics.FillRectangle(isbutactive ? new SolidBrush(this.activeColor) : new SolidBrush(this.BackColor), rectangle);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Springmvc,spring ,mybatis,整合,ssm

上一章内容&#xff1a; 1.spring框架:作用 开源的框架--提供IOC和AOPIOC控制反转 把创建对象的权力交于spring创建&#xff0c;并管理对象的生命周期&#xff0c;通过DI完成对象属性的注入。 ​ 2. spring配置中<bean>也可以使用注解Component Controller Service Repo…

微服务分布式(二、注册中心Consul)

首先我们需要安装consul,到官网下载Consul Install | Consul | HashiCorp Developer 在解压的consul目录下 执行启动命令 consul agent -dev 启动服务 -dev表示开发模式 -server表示服务模式 启动后在浏览器访问8500端口http://localhost:8500/可以看到服务管理界面 项目…

示波器--UNI-T 优利德 UT4102C 使用介绍

示波器--UNI-T 优利德 UT4102C 使用介绍 1 介绍图示特点 2 UTP04示波器探头&#xff08;100M带宽&#xff09;3 功能介绍4 示例RS232 电平信号测试 参考 1 介绍 图示 特点 2GS/s的实时采样率&#xff1a;设备能够以每秒2吉萨&#xff08;Giga Samples per second&#xff09;…

半连接转内连接规则的原理与代码解析 |OceanBase查询优化

背景 在查询语句中&#xff0c;若涉及半连接&#xff08;semi join&#xff09;操作&#xff0c;由于半连接不满足交换律的规则&#xff0c;连接操作必须遵循语句中定义的顺序执行&#xff0c;从而限制了优化器根据参与连接的表的实际数据量来灵活选择优化策略的能力。为此&am…

基础库正则表达式

我们已经可以用requests 库来获取网页的源代码&#xff0c;得到 HTML 代码。但我们真正想要的数据是包含在 HTML代码之中的&#xff0c;要怎样才能从 HTML,代码中获取想要的信息呢?正则表达式就是其中一个有效的方法。 本篇博客我们将了解一下正则表达式的相关用法。正则表达…

Azure虚拟机非托管磁盘大小调整

想要扩容一个Azure VM 的磁盘空间&#xff0c;门户里面竟然无法扩展&#xff0c;点点鼠标就完事的时代在离去&#xff0c;微软越来不想微软。 在门户里面即便使用Azure Cli命令行也不行。 PS /home/gpchina> az disk list [] 返回为空&#xff0c;根本没有返回磁盘。 不过使…

PID 控制算法理论背景:飞控领域的核心调控机制(1)

在飞控工程领域&#xff0c;PID 控制算法占据着极为关键的地位&#xff0c;是实现飞行器精确稳定控制的基石。PID 作为比例&#xff08;P&#xff09;、积分&#xff08;I&#xff09;、微分&#xff08;D&#xff09;的集成代表&#xff0c;构建起了控制系统的核心架构&#x…

复合翼与倾转旋翼飞行器:设计与控制算法对比

一、引言 复合翼&#xff08;Compound Wing&#xff09;和倾转旋翼&#xff08;Tilt - Rotor&#xff09;飞行器在现代航空领域均占据独特地位&#xff0c;二者在设计和控制算法方面展现出显著差异。这些差异在飞行模式切换、推进系统设计、控制算法复杂度以及飞行器稳定性等多…

Vue2五、自定义指令,全局局部注册、指令的值 ,插槽--默认插槽,具名插槽 ( 作用域插槽)

一、自定义指令 使用步骤 1. 注册 (全局注册 或 局部注册) &#xff0c;在 inserted 钩子函数中&#xff0c;配置指令dom逻辑 2. 标签上 v-指令名 使用 1、自定义指令&#xff08;全局&#xff09; Vue.directive("指令名"&#xff0c;{ 指令的配置项 insert…

一次BC站点渗透实录

初探 打开首页 简单信息收集: IP地址&#xff1a;美国加利福尼亚洛杉矶 无CDN 中间件:Nginx 80端口直接突破&#xff0c;故未进行端口扫描 渗透思路 一般这种BC站点&#xff0c;有几种思路可以切入&#xff1a; 1&#xff09;通过SQL注入查到管理员账号密码&#xff0c;扫描…

java 集合对象

Java 基础之集合_java集合继承关系图-CSDN博客 集合可以有序或无序&#xff0c;重复或不能重复&#xff0c;空或不能空。 List<> 集合&#xff0c;是有序&#xff0c;允许重复元素&#xff0c;允许空元素 1、ArrayList<> 非线程安全 2、LInkedList<> 非线…

深入探索 ClickHouse:性能优化之道

在大数据处理的广袤天地里&#xff0c;ClickHouse 宛如一颗璀璨的明星&#xff0c;以其卓越的性能为海量数据的存储与查询提供了强大助力。但要想让 ClickHouse 发挥出极致效能&#xff0c;性能优化至关重要。今天&#xff0c;就让我们一同深入探寻 ClickHouse 的性能优化之路。…

web实操8-cookie

会话技术 会话&#xff1a; 一次会话中包含多次请求和响应。 客户端浏览器访问服务器的资源&#xff0c;只要客户端或者服务器端不关闭&#xff0c;这始终在一次会话范围内&#xff0c;这一次会话范围内可以包含多次请求并且收到多次相应。 一次会话&#xff1a;浏览器第一…

Day50 图论part01

图论理论基础 大家可以在看图论理论基础的时候&#xff0c;很多内容 看不懂&#xff0c;例如也不知道 看完之后 还是不知道 邻接矩阵&#xff0c;邻接表怎么用&#xff0c; 别着急。 理论基础大家先对各个概念有个印象就好&#xff0c;后面在刷题的过程中&#xff0c;每个知识…

VMWare 的克隆操作

零、碎碎念 VMWare 的这个克隆操作很简单&#xff0c;单拎出来成贴的目的是方便后续使用。 一、操作步骤 1.1、在“源”服务器上点右键&#xff0c;选择“管理--克隆” 1.2、选择“虚拟机的当前状态”为基础制作克隆&#xff0c;如下图所示&#xff0c;然后点击“下一页” 1.3、…

JVM性能优化一:初识内存泄露-内存溢出-垃圾回收

本文主要是让你充分的认识到什么叫做内存泄露&#xff0c;什么叫做内存溢出&#xff0c;别再傻傻分不清了&#xff0c;别再动不动的升级服务器的内存了。 文章目录 1.基本概念1.1.内存泄露1.2.内存溢出1.3.垃圾回收1.4.内存泄露-垃圾回收-内存溢出三者的关系关系 2.代码示例2.…

dockfile镜像加速

运行给的终端命令 全覆盖法 {"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://dockerhub.azk8s.cn","https://mirror.ccs.tencentyun.com","https://registry.cn-han…

【RK3588 Linux 5.x 内核编程】-内核中断与ThreadedIRQ

内核中断与ThreadedIRQ 文章目录 内核中断与ThreadedIRQ1、Threaded IRQ介绍2、Threaded IRQ相关API3、驱动实现4、驱动验证当 Interrupt 触发时,Interrupt handler 应该执行得非常快,它不应该运行更多的时间(它不应该执行耗时的任务)。 如果我们有执行更多任务的中断处理程…

如何正确使用人工智能:开启智慧学习与创新之旅

在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;已如影随形地融入我们的学习、工作与生活。从智能学习辅助工具到创意生成引擎&#xff0c;AI 为我们带来了前所未有的便利与机遇。然而&#xff0c;如同任何强大的工具&#xff0c;正确使用人工智能至关重要。本…

数据结构经典算法总复习(下卷)

第五章:树和二叉树 先序遍历二叉树的非递归算法。 void PreOrderTraverse(BiTree T, void (*Visit)(TElemType)) {//表示用于查找的函数的指针Stack S; BiTree p T;InitStack(S);//S模拟工作栈while (p || !StackEmpty(S)) {//S为空且下一个结点为空&#xff0c;意味着结束遍…