基于C#制作一个桌面宠物

news2025/7/9 9:41:37

此文主要基于C#制作一个桌面宠物,可自定义宠物素材图片及打开外部exe的快捷菜单。

在这里插入图片描述

    • 实现流程
      • 1.1、创建项目
      • 1.2、准备素材
      • 1.3、控件设置
        • (1)PictureBox控件
        • (2)timer控件
        • (3)contextMenuStrip控件
      • 1.4、生成为exe程序
      • 1.5、设置开机自启
    • 代码块

实现流程

1.1、创建项目

  1. 打开Visual Studio,右侧选择创建新项目。

在这里插入图片描述

  1. 搜索框输入winform,选择windows窗体应用,填写对应的保存路径点击下一步,创建成功后如下图。

在这里插入图片描述
在这里插入图片描述

  1. 将Form1的FormBorderStyle属性设置为None,这时窗体效果则由下图1变成了图2的样子。

在这里插入图片描述

在这里插入图片描述

1.2、准备素材

这里简单放了几张罗小黑的gif素材,大家可以根据自己的喜好准备。

1.3、控件设置

(1)PictureBox控件

在工具箱搜索PictureBox控件,将其拖拽到窗体上。

在这里插入图片描述

给PictureBox设置一张默认背景图,并通过Size属性设置其宽高。

在这里插入图片描述

(2)timer控件

在工具箱搜索Timer控件,将其拖拽到窗体上。
Timer控件是一种通过引发Timer事件,可以有规律地隔一段时间执行一次代码的控件,这里主要是用这个控件实现素材切换的效果。

在这里插入图片描述

在窗体代码顶部定义数组,存放素材数据。

在这里插入图片描述

public Bitmap[] Resource = {
            Properties.Resources.罗小黑0,
            Properties.Resources.罗小黑1,
            Properties.Resources.罗小黑2
        };

双击拖拽进来的timer控件,定义随机数,设置控件背景图,这里随机数不要大于你的素材的数量,不然会有越界的情况。

在这里插入图片描述
在这里插入图片描述

private void timer_Tick(object sender, EventArgs e)
{
      int random = new Random().Next(0, 2);
      picBox.Image = (Image)Properties.Resources.ResourceManager.GetObject($"罗小黑{random}");
  }

回到窗体上,右击timer控件,设置Interval属性值,控制切换素材的频率

在这里插入图片描述

(3)contextMenuStrip控件

在工具箱搜索contextMenuStrip,将其拖拽到窗体上,ContextMenuStrip实际就是上下文菜单,就是右键单击某个窗体或者控件后出来的菜单。

在这里插入图片描述

单击选中pictureBox,在其contextMenuStrip属性中选择刚才所添加的控件

在这里插入图片描述

单击contextMenuStrip,在上方文本框处配置菜单

在这里插入图片描述

双击菜单进去,即可配置点击时对应的响应事件,这里先简单配置下是否能够打开外部exe程序

在这里插入图片描述

Process m_Process = null;
m_Process = new Process();
m_Process.StartInfo.FileName = @"这里放你的外部exe程序路径";
m_Process.Start();

1.4、生成为exe程序

右击解决方案,点击生成

在这里插入图片描述

左下角显示生成成功后,在文件夹中打开项目

在这里插入图片描述

在这里插入图片描述

从bin文件夹到Debug文件夹,单击后缀为exe的应用程序桌面宠物就呈现出来了。

在这里插入图片描述

在这里插入图片描述

1.5、设置开机自启

  1. 复制该应用程序的快捷程序。
  2. win + r 键打开运行,在文本框输入 shell:startup,回车确认。
  3. 将复制的程序粘贴进来就搞定了。

代码块

public Bitmap[] Resource = {
	Properties.Resources.罗小黑0,
	Properties.Resources.罗小黑1,
	Properties.Resources.罗小黑2
};
private Boolean IsMouseDown = false;
private Point MousePoint;
private Boolean hide = false;
public Box()
{
InitializeComponent();
InitMenu();
}
private void timer_Tick(object sender, EventArgs e)
{
	int random = new Random().Next(0, 14);
	"你的puctureBox控件名".Image = (Image)Properties.Resources.ResourceManager.GetObject($"罗小黑{random}");
}
private void Lxh_MouseMove(object sender, MouseEventArgs e)
{
    if (IsMouseDown)
    {
        Point snap = Cursor.Position;
        this.Location = new Point(Location.X + (snap.X - MousePoint.X), Location.Y + (snap.Y - MousePoint.Y));
        MousePoint = Cursor.Position;
    }
}
private void Lxh_MouseDown(object sender, MouseEventArgs e)
{
    IsMouseDown = true;
    MousePoint = Cursor.Position;
}

private void Lxh_MouseUp(object sender, MouseEventArgs e)
{
    IsMouseDown = false;
}
 /// <summary>
 /// 退出程序
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void Exists_Click(object sender, EventArgs e)
 {
     System.Environment.Exit(0);
 }
 /// <summary>
 /// 显/隐
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void Display(object sender, EventArgs e)
 {
     if (hide)
     {
         this.Show();
     }
     else
     {
         this.Hide();
     }
     hide = !hide;
 }
 /// <summary>
 /// 文件资源管理器
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void Explorer(object sender, EventArgs e)
 {
     Helper.StartProcess("Explorer.exe");
 }
 private void toolStripMenuItem1_Click(object sender, EventArgs e)
 {
     Process m_Process = null;
     m_Process = new Process();
     m_Process.StartInfo.FileName = @"这里放外部exe程序路径";
     m_Process.Start();
 }

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

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

相关文章

学习MySQL必须掌握的13个关键字,你get了吗?

1、三范式 第一范式&#xff1a;每个表的每一列都要保持它的原子性&#xff0c;也就是表的每一列是不可分割的&#xff1b;第二范式&#xff1a;在满足第一范式的基础上&#xff0c;每个表都要保持唯一性&#xff0c;也就是表的非主键字段完全依赖于主键字段&#xff1b;第三范…

【微服务】Nacos2.x服务发现?RPC调用?重试机制?

&#x1f496;Spring家族及微服务系列文章 ✨【微服务】Nacos通知客户端服务变更以及重试机制 【微服务】SpringBoot监听器机制以及在Nacos中的应用 ✨【微服务】Nacos服务端完成微服务注册以及健康检查流程 ✨【微服务】Nacos客户端微服务注册原理流程 ✨【微服务】SpringClou…

Vue 和 React 比,React 好在哪里?

​ 这两个设计理念上就有所区别&#xff0c;类比过来就是&#xff1a;Vue 是自动挡汽车&#xff0c;React 是手动挡汽车。 在 Vue 中&#xff0c;不需要去注意视图和数据的一致性&#xff0c;因为有双向绑定看帮你处理&#xff0c;响应式的。还有一些很方便的 v-if、v-model 之…

软考 - 面向对象开发

⭐设计模式UML详解&#xff1a;https://blog.csdn.net/qq_40274514/article/details/124047443 面向对象基础 面向对象的程序设计 和 面向对象设计区别 面向对象的程序设计涉及到具体的编程语言 面向对象设计只从系统逻辑结构设计解决方案 常见的机制 动态绑定&#xff1a;过…

ESXi5.5远程升级到ESXi6.7 (VMware Hypervisor)

1、ESXi的介质分为两类&#xff0c;以6.7为例&#xff1a; VMware vSphere Hypervisor (ESXi ISO) image (Includes VMware Tools)&#xff08;ISO包&#xff09; VMware vSphere Hypervisor (ESXi) Offline Bundle &#xff08;ZIP包&#xff09; 如果要升级&#xff0c;需要Z…

【畅购商城】详情页详情之商品详情

1.构建详情页 步骤0&#xff1a;确定访问路径 http://localhost:3000/Goods?id1 步骤二&#xff1a;复制 ~/static/goods.html 内容&#xff0c;导入第三方资源&#xff08;css、js&#xff09; head: {title: 列表页面,link: [{rel:stylesheet,href: /style/goods.css},{re…

Sysweld笔记:利用稳态算法加速算法模拟焊接过程的残余应力

作者&#xff1a;贾亚波博士&#xff0c;仿真秀专栏作者 在进行热力耦合的仿真过程中&#xff0c;如果模型足够的长并且热源速度恒定&#xff0c;通常其热学&#xff0c;相变以及热力耦合都会达到稳态的过程&#xff0c;因此如何直接计算稳态问题成为了大家研究的热点问题。 …

【C++笔试强训】第二十四天

&#x1f387;C笔试强训 博客主页&#xff1a;一起去看日落吗分享博主的C刷题日常&#xff0c;大家一起学习博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a;夜色难免微凉&#xff0c;前方必有曙光 &#x1f31e;。 &#x1f4a6;&a…

【数据结构】栈基本操作的实现(C语言)

&#x1f680; 作者简介&#xff1a;一名在后端领域学习&#xff0c;并渴望能够学有所成的追梦人。 &#x1f40c; 个人主页&#xff1a;蜗牛牛啊 &#x1f525; 系列专栏&#xff1a;&#x1f6f9;初出茅庐C语言、&#x1f6f4;数据结构 &#x1f4d5; 学习格言&#xff1a;博…

SpringBoot项目打包时配置文件区分日常、测试、预发、正式环境

前言&#x1f34a; 在我们开发项目的时候&#xff0c;一般有四套环境&#xff1a;日常、测试、预发、正式。日常环境作为我们开发环境&#xff1b;测试环境给测试同学测试功能&#xff1b;预发环境给正式环境发布时提供准备&#xff1b;正式环境则是稳定的生产环境。 这四套环…

面试官问我new Vue阶段做了什么?

前言 本篇录入吊打面试官专栏&#xff0c;希望能祝君拿下Offer一臂之力&#xff0c;各位看官感兴趣可移步&#x1f6b6;。这段时间面了很多家公司&#xff0c;被问到的题我感觉不重复不止100道&#xff0c;将会挑选觉得常见且有意义的题目进行分析及回答。有人说面试造火箭&am…

Redis字符串、hash、列表方法使用以及Redis管道与Django集成Redis

目录标题一、Redis字符串操作二、Redis-hash操作三、Redis列表操作四、Redis管道五、Redis其他操作六、Django中集成Redis七、Celery介绍一、Redis字符串操作 名称属性setex:过期时间&#xff08;秒&#xff09;px:过期时间(毫秒) nx:如果设置为True&#xff0c;则只有name不存…

毕业设计:SpringBoot+Vue+Element的校内跑腿平台

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 文末获取源码 项目编号&#xff1a;BS-XX-…

MySQL基础总结

一.sql数据及语言基本类型: 1.语言的分类 DDL:数据定义语言,用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等 DML:数据操作语言,用来对数据库中表的记录进行操作。关键字:insert,delete,update等 DQL:数据库查询语言,用来查询数据库中表的记录。关键字:select,…

PIX2SEQ: A LANGUAGE MODELING FRAMEWORK FOR OBJECT DETECTION

文章目录ABSTRACT1 INTRODUCTION2 pix2seq框架2.1SEQUENCE CONSTRUCTION FROM OBJECT DESCRIPTIONS2.2 ARCHITECTURE, OBJECTIVE AND INFERENCE2.3 SEQUENCE AUGMENTATION TO INTEGRATE TASK PRIORS3 EXPERIMENTS3.1 EXPERIMENTAL SETUP3.2 MAIN COMPARISONS3.3 ABLATION ON SE…

2022年都在说软件测试饱和了?都在担心面试不上。

今年开始&#xff0c;小编听到最多的问题就是 软件测试行业是不是饱和了&#xff1f; 软件测试行业还有前景吗&#xff1f; 无非是因为投出去的简历回复的越来越少了 据中华英才网统计&#xff0c;目前软件测试人才的缺口在100万人以上&#xff0c;并以每年20%的速度递增&am…

2.5 自定义srv C++

功能介绍 以自定义数据类型为基础&#xff0c;完成一个节点作为服务器&#xff0c;另一个节点接收传送两个数字到服务端&#xff0c;服务端计算后反馈到客户端进行打印输出 1、工作空间 1.1 创建工作空间lee_ws mkdir -p ~/lee_ws/src cd ~/lee_ws/src/ catkin_init_worksp…

Unity 旋转大总结和项目操作

操作演示 旋转 (online-video-cutter.com)旋转方法都放在了按钮上&#xff0c;第一个是初始化按钮&#xff0c;将cube恢复到&#xff08;0&#xff0c;0&#xff0c;0&#xff09;&#xff0c;但是位置不会变成&#xff08;0&#xff0c;0&#xff0c;0&#xff09; 这个是参…

clickhouse中的sql操作

DDL操作 create操作 create table t_order_mt2(id UInt32,sku_id String,total_amount Decimal(16,2),create_time Datetime,INDEX a total_amount TYPE minmax GRANULARITY 5 ) engine MergeTree partition by toYYYYMMDD(create_time) order by (id, sku_id) primary key …

【工具】工具小集

Gif录制工具 LICEcap一款轻量级屏幕录制工具&#xff0c;可以导出GIF动画图片格式&#xff0c;支持导出GIF 动画图片格式&#xff0c;可灵活调整录制窗口大小。 https://www.cockos.com/licecap/ 浏览器插件&#xff08;工具箱&#xff09; FeHelper插件支持Chrome、Firefox…