烟99 发表于 2024-9-19 21:50

【C#代码】《吾爱算电阻》源代码(适合新手小白学习)(20240927更新)

本帖最后由 烟99 于 2024-9-27 20:37 编辑


我比较懒,直接把readme.md丢进去吧

本人的第一个C#项目,有很多做的欠缺的地方,望多多海涵!业余编程爱好者!大佬勿喷!

部分写法参照了AI给出的建议,但是绝大部分是我自己写的,如果有相关的需求,可以抄作业!但是请不要冒充原创!冒充原创最高将处以永久禁言的处罚!


为了让习惯易语言的小白能好理解一些,注释里的措辞基本上是按易语言来的,比如bool型数据称之为逻辑型,有何不妥之处欢迎评论区指出。



# 《吾爱算电阻》软件源代码


### 基本信息
源码名称:吾爱算电阻
源码版本:2.1.0
源码作者:吾爱破解@烟99
遵循协议:Creative Commons Zero v1.0 Universal   
源码语言:C#
.NET Framework框架版本:4.5


### 基本介绍
《吾爱算电阻》是一款用于计算电阻色环的小工具,您只需要根据您手中的电阻色环颜色来设置本软件相应的电阻色环就可以快速计算出该电阻的阻值。是电气电子专业学生、业余电子爱好者、电子发烧友的必备软件。本着知识共享的原则,现公开本软件源代码,供各位朋友们学习,本源码涉及到数学计算、条件判断、控制的操作等基础知识,适合小白学习C#,大佬勿喷!
### 源码更新日志
"--------------------------------------------
2024.09.27
"--------------------------------------------
1、“关于”窗体加入了源码链接。
2、修改了一些函数和变量 的不规范的命名格式。

"--------------------------------------------
2024.09.19
"--------------------------------------------
源码对外公开

### 软件更新日志
"--------------------------------------------
V2.1.0——2024.09.19
"--------------------------------------------
1、问题修复:
1)修正了特定情况下色环为10的-1、-2次幂时候计算结果为0Ω的bug;
2)修正了在运行本人出品软件《吾爱记账号》时同时运行本软件提示软件重复运行的bug,已变更判断机制。
2、优化了帮助文档的内部工作机制。
3、从此版本起,本软件正式公开源代码!为此,程序源代码优化调整。
4、由于此版本对帮助窗口进行了优化,软件的.NET Framework框架版本更新至Ver 4.5,Win8及以下系统需要到微软官网手动下载安装。

"--------------------------------------------
V2.0.0——2024.03.15
"--------------------------------------------
1、从此版本起,《多功能电阻色环计算工具》正式更名为《吾爱算电阻》!同时软件由之前的易语言编写改用基于.NET Framework 2.0框架的C#编写,稳定性大幅提升,彻底解决软件误报的问题,全新框架,全新开始!
2、新增特色功能——保存与分享!支持将计算结果输出为图片,用于保存或分享给好友!
4、细节优化:   
1)选取色环颜色的时候会播放系统提示音;
2)为分清无色色环,当选取无色色环时会显示轮廓;
3)选取色环颜色后,电阻图形下方会显示相应的数值含义,边用边学边记。
5、移除了软件换肤功能及相关DLL插件,以确保杀软、电脑管家不会误报。
6、移除了外部CHM帮助文档文件,改为内嵌到软件EXE中,做到真正意义上的单文件便携版。
7、去除了菜单栏的一些冗余的菜单项。

"--------------------------------------------
V0.8.1——2020.11.03
"--------------------------------------------
1、修正了10的N次幂算法错误的Bug,其金、银两个色环的代表数值已更正为0.1、0.01。
2、修正了“下载新版本”菜单项不能单击的bug, 并更名为“检查更新/软件发布页”。

"--------------------------------------------
V0.8.0——2020.10.30
"--------------------------------------------
1、软件正式发布。

### 部分代码展示
      private void btn_SaveAs_Click(object sender, EventArgs e)
      {
            //创建一个“另存为”对话框
            SaveFileDialog savedialog = new SaveFileDialog();

            //对话框标题
            savedialog.Title = "请选择需要保存的位置:";

            //对话框文件过滤器(提供JPG、PMG、BMP、GIF四种格式的图片保存功能)
            savedialog.Filter = "JPEG 图像|*.jpg|可移植网络图像|*.png|Windows位图|*.bmp|GIF 格式图片|*.gif";

            //文件过滤器默认选中0
            savedialog.FilterIndex = 0;

            //保存对话框是否记忆上次打开的目录
            savedialog.RestoreDirectory = true;

            //检查目录
            savedialog.CheckPathExists = false;

            //默认保存路径为我的文档的图片文件夹
            savedialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);

            //默认文件名为软件英文名称+日期
            savedialog.FileName = "52ResistanceCalc" + "_" + System.DateTime.Now.ToString("yyyy") + "_" + System.DateTime.Now.ToString("MM") + "_" + System.DateTime.Now.ToString("dd") + "_" + System.DateTime.Now.ToString("HH") + "_" + System.DateTime.Now.ToString("mm") + "_" + System.DateTime.Now.ToString("ss"); ;//设置默认文件名


            //根据文件过滤器选定项目来决定文件格式
            if (savedialog.ShowDialog() == DialogResult.OK)
            {
                if (savedialog.FilterIndex == 1)
                {
                  img_ShareView.Image.Save(savedialog.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
                }
                else if (savedialog.FilterIndex == 2)
                {
                  img_ShareView.Image.Save(savedialog.FileName, System.Drawing.Imaging.ImageFormat.Png);
                }
                else if (savedialog.FilterIndex == 3)
                {
                  img_ShareView.Image.Save(savedialog.FileName, System.Drawing.Imaging.ImageFormat.Bmp);
                }
                else if (savedialog.FilterIndex == 4)
                {
                  img_ShareView.Image.Save(savedialog.FileName, System.Drawing.Imaging.ImageFormat.Gif);
                }

                //保存成功提示
                MessageBox.Show("图片保存成功!点击<确定>按钮后显示保存图片所在文件夹。", "保存完成", MessageBoxButtons.OK, MessageBoxIcon.Information);

                //用Windows浏览器定位所保存的文件
                System.Diagnostics.Process.Start("Explorer", "/select," + savedialog.FileName);
            }

### 如何编译
1、本软件依赖于.NET Framework V4.5运行,原则上Visual Studio 2015就可以编译,但是本人是在Visual Studio 2022中编译的,因此建议在Visual Studio 2022中编译。
2、本软件使用了第三方NuGet包:DotNetZip,需要额外自行引入,否则无法编译。

### 反馈bug
两种方式,第一种方式为登录吾爱破解论坛账号,然后给我发站内信。“发送站内信的时候请遵守论坛版规,禁止留QQ、微信等联系方式,对利用私信留联系方式的行为将从重处罚!
我的主页:https://www.52pojie.cn/home.php?mod=space&uid=368698
如果你没有论坛账号,那就可以通过第二种方式来反馈软件bug,点击下方的问卷星的问卷链接,按要求填写调查问卷即可。
问卷星调查问卷链接:https://www.wjx.cn/vm/m70cHBN.aspx

### 软件发布页
https://www.52pojie.cn/thread-1965826-1-1.html

### 源码链接:
暂时隐藏,回帖后可见,120小时后开放

**** Hidden Message *****

原本吾爱记账号也有开源计划,但考虑到软件涉及信息安全问题而不得不放弃,目前正在立项一个字帖生成器软件,但是用了第三方包后不知道怎么回事各种报错,目前还在研究中。




帅的惊动党 发表于 2024-9-20 20:38

x781953636 发表于 2024-9-20 01:22
一次性赋值不太好吧,这样一行代码很长,可读性比较差,而且修改时候容易出错,图片文件名加前缀是为了区分 ...

SaveFileDialog savedialog = new SaveFileDialog()
            {
                Title = "请选择需要保存的位置:",
                Filter = "JPEG 图像|*.jpg|可移植网络图像|*.png|Windows位图|*.bmp|GIF 格式图片|*.gif",
                FilterIndex = 0,
                RestoreDirectory = true,
                CheckPathExists = false,
                InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures),
                FileName = "52ResistanceCalc" + "_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss"),
            };


长度还好吧,一样写
switch一个是比ifelse效率高,一个是我觉着比ifelse美观

flyer_2001 发表于 2024-9-20 10:34

那个ifelse,可以定义一个数组用来保存格式,这样显得简洁一些,其实效果一样,如果增加格式,比较方便

if (savedialog.FilterIndex >= 1 and savedialog.FilterIndex <= 4)
{
    img_ShareView.Image.Save(savedialog.FileName, szFormat);
}

张科大爷 发表于 2024-9-19 21:54

站此1楼,谢谢分享

fgx910 发表于 2024-9-19 22:13

第二楼,谢谢大神,谢谢分享

天轩科技 发表于 2024-9-19 22:14

站此2楼,谢谢分享

mdictfan 发表于 2024-9-19 22:14

感谢!学习一下。

xindelangmaney 发表于 2024-9-19 22:31

谢谢,下载看看

帅的惊动党 发表于 2024-9-19 22:44

1. new对象直接赋值会不会好点
2. 时间自定义文本还可以这样取更方便点 DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss");
3. if else 换成switch会不会好点

hanjiancheng 发表于 2024-9-19 22:50

谢谢大神,谢谢分享

xiaobaixuepj 发表于 2024-9-19 22:55

感谢分享

vscos 发表于 2024-9-19 22:55

来看看是不是有用
页: [1] 2 3 4 5 6 7
查看完整版本: 【C#代码】《吾爱算电阻》源代码(适合新手小白学习)(20240927更新)