winform新手学习小结

最近在用winform做一个项目,也是从零开始。但是之前有unity的基础,感觉winform还算是比较好入手的,这里面感觉最难的就是适配性问题。接下来总结一下做整个项目中学到的东西把,里面会有一些新手常见的坑,还是很值得新手关注的。


1.入门文档:http://c.biancheng.net/csharp/winform/

花了两个小时左右看这个文档教程,大概了解了有哪些控件,对整个winform有一个大概的认识。文档言简意赅,还算可以。


2.画板画线功能C#之在PictureBox上绘制动态矩形框_Kevin_Sun777的博客-CSDN博客

鼠标画矩形框线参考的这篇文档,创建了一个pictureBox后,再配置好MouseDown事件MouseMove事件、MouseUp事件、Paint事件。这四个函数配置好了就可以很方便地进行画矩形框了。

而要用固定点直接画线的话参考:C# 利用GDI+画终点为箭头的直线_a237428367的专栏-CSDN博客

可以类似理解为Graphics g = this.panelControl2.CreateGraphics()后,g等效于e.Graphics。


3.将图片的某一颜色设置为透明图:C#把白色背景变成透明_Hello World-CSDN博客


4.截图:

用鼠标自由截图参考:C#实现小截屏软件功能_C#教程_脚本之家 (jb51.net)

句柄截图方式参考的https://www.mzwu.com/article.asp?id=4539,其他种类的截图方式参考:c#将某个控件或整个窗体导出为图片_xuquanxi1079的博客-CSDN博客_c#输出图片

直接用CopyFromScreen一般是已经够用了,但是在显示器缩放比例不为100%的时候容易出问题,这个问题卡了我很久,后面我在详细说一下。而使用句柄截图可以忽略缩放比例的问题。


5.延时小功能。

延时还蛮有用的,有时候当你百思不得其解,明明没有bug但是好像就出问题了。这很可能是同步异步的问题。这时候加个延时函数延时个几十毫秒问题可能就解决了。延时函数可以参考:C#一些延时函数 - 未风 - 博客园 (cnblogs.com)


6.视频播放功能。

参考的C#使用axWindowsMediaPlayer实现音乐播放器_Amazing_anna的博客-CSDN博客还有C#中axWindowsMediaPlayer控件的用法_laijieyao的专栏-CSDN博客

在拖动axWindowsMediaPlayer的时候要多拖几次,有可能太快了那个放置的十字显示不出来。而且注意的是,我创建的时候.net framework的框架可以创建,而.net core的框架创建不出来。


7.HTTP接口通信。

普通的HTTP需求参考的C# Winform发送HTTP请求_Susinl的博客-CSDN博客

但是要大文件传输,如传输视频、音乐参考的是https://blog.csdn.net/xxj_jing/article/details/50221113。传输大文件还是比较复杂的,这个博主写的这篇文章可以仔细品味。


8.弹窗功能。MessageBox.Show("操作错误", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);

采用弹窗功能可以很好地实现提示效果。


9.字符串。字符串切割,参考的https://blog.csdn.net/potential1/article/details/78216324https://www.cnblogs.com/wwwbdabc/p/11652588.html

这篇博客给了多种切割方式,可以灵活使用很方便地切割出自己想要的内容。

而字符串转整数,用的Convert.ToInt()。Convert是个不错的工具类,还可以诸如字符串转时间:Convert.ToDateTime()。


10.文件名获取。文件名操作参考的C# Winform中如何获取文件名与文件路径 - 王明辉 - 博客园 (cnblogs.com)。我需要比较有用的是获取不带文件后缀的文件名,调用的System.IO.Path.GetFileNameWithoutExtension()函数。


11.设置图层。可以采用control.BringToFront()来设置图层次序等等。而如果要设置一个透明的遮罩且不遮住背后的图层,需要把这个遮罩设置为后面图层的子物体。可以参考C#WinForm开发:如何将控件背景色设置为透明_m0_37613570的博客-CSDN博客_winform设置控件的透明度WinForm控件的Parent及Owner_追梦人521的博客-CSDN博客


12.窗口清晰度问题。一开始创建项目运行的是很好窗体会很糊,参考Winform分辨率适应,高清显示_打工人的博客-CSDN博客_winform 分辨率。设置一下过后,效果就好很多了,不过要注意的是此方法在framework版本4.5以上会有效,4.5以下的可能不行。


13.接下来上这次项目遇到的最大的坑。大家一创建项目后一定要注意这句话,这句话看到了能少走很多坑。

为什么这句话恶心呢?因为很多问题的罪恶根源就在这里,比如清晰度问题、控件变大问题。在用12的办法设置后一般是不会遇到什么问题了。如果还是这样,那么参考c#Winform窗体实际运行大小与size属性设置不一致问题解决_c++真香的博客-CSDN博客

在winform中控件的大小都是以像素点为单位的,有时候出现运行后控件被放大了,那就看看这两条博客应该能解决问题。我是在截图的时候遇到了截图有问题,在被放大后控件的坐标都也被放大了的。


目前遇到的差不带多就这些,欢迎大家也来分享以下自己遇到的坑

猜你喜欢

转载自blog.csdn.net/qq_42987967/article/details/120069245