C#
文章平均质量分 67
林新发
Keep Reading , Keep Writing , Keep Coding.
展开
-
winform桌面应用程序(.Net Framework)文本描边效果实现
文章目录一、前言二、添加类,拓展Label描边效果三、重新生成解决方案四、使用LabelExt一、前言有这样一个需求,在winform桌面应程序中显示的文本要有描边效果,正常Label是不带描边效果的,如下:这个需要对Label进行拓展,最终效果如下:本文就介绍下具体实现。二、添加类,拓展Label描边效果右键工程,点击菜单 添加 - 类。类名比如叫LabelExt,点击添加。代码如下:using System.Windows.Forms;using System.Drawing原创 2021-02-22 09:54:05 · 1276 阅读 · 0 评论 -
C#获取电脑系统信息和硬件信息,兼容XP/Win7/Win10(依赖System.Management.dll)
文章目录一、前言二、具体实现1、引入System.Management.dll2、引入命名空间3、获取系统信息4、获取CPU信息5、获取内存信息6、获取硬盘信息7、获取显卡信息三、兼容XP/Win7/Win10四、补充,Windows API:GetSystemInfo接口一、前言需要做一个.NET桌面应用程序,有一个功能需求:获取电脑系统信息和硬件信息。写篇文章来讲下。二、具体实现1、引入System.Management.dll右键工程引用,点击添加引用,点击浏览,找到C盘中.NET原创 2021-01-27 18:45:15 · 4247 阅读 · 0 评论 -
新发的日常小实验——使用.NET Reactor对.NET程序进行加壳保护(反编译、加壳、混淆)
文章目录一、前言二、关于.Net Rector三、.Net Rector下载四、.Net Rector的简单使用1、主界面2、选择程序及(.exe)3、Quick Settings(快速设置)4、点击Protect,执行加壳保护五、补充1、Settings(详细设置)2、License Manager(证书管理)一、前言最近在搞winfrom窗体应用的开发,做一个简单的浏览器,然后嵌入到Unity中使用(PC版本)。由于winfrom使用.NET Framwork框架开发,所以可以很轻易地使用ILSp原创 2020-11-02 09:58:09 · 5990 阅读 · 0 评论 -
新发的日常小实验——使用c# winfrom窗体应用制作浏览器,实现c#与html js交互
文章目录一、前言二、问题三、具体实现1、写js代码2、启动web服务器3、创建winform窗体应用工程4、写c#代码5、运行测试一、前言假设,现在我想做一个浏览器,用c# winfrom窗体应用制作,浏览器执行一段js代码,然后把js的执行结果返回给浏览器的c#,然后在c#做进一步的逻辑处理。二、问题网页的js与浏览器的c#如何交互呢?三、具体实现1、写js代码html.test代码如下<!DOCTYPE html><html><head><原创 2020-10-23 19:38:05 · 1261 阅读 · 0 评论 -
新发的无聊小实验——c# winform不规则窗口实现(透明窗口)
文章目录一、前言三、最终运行效果三、分析四、具体代码一、前言最近在搞c#的winform窗体应用,需要实现一个不规则窗口的效果。比如形状如下的一个窗口三、最终运行效果三、分析想要做一个不规则的窗口,那么标题栏要去掉;标题栏去掉了,窗口就不能移动了,所以我们还要实现窗口的移动逻辑,最后,窗口使用一张不规则形状的背景图,通过一个算法,判断各个像素的alpha值是否小于我们设定的alpha阈值,如果是,则把颜色过滤掉,这样就实现了透明效果了,也就实现了不规则形状的显示。四、具体代码代码如下,注原创 2020-10-23 18:01:43 · 1299 阅读 · 0 评论 -
新发的日常小问题——c# winform窗口置顶显示
最近在搞c#的winfrom窗体应用,做一个浏览器,需要让它置顶显示。只需一行代码即可,例:public partial class MyForm : Form{ public MyForm() { InitializeComponent(); //窗口置顶显示 this.TopMost = true; }}...原创 2020-10-23 16:40:31 · 661 阅读 · 0 评论 -
新发的日常小实验——c#的.net工程(winform桌面窗体应用)如何将引用的dll嵌入到exe中
文章目录一、前言二、libs文件夹三、添加dll引用,设置不复制四、设置嵌入嵌入的资源五、在代码中动态处理dll加载六、发布exe一、前言最近在搞c#的winform工程(.NET Framework),需要引用一个第三方dll,正常情况下,打包成.exe,会自动拷贝这个dll文件到exe所在的目录中,能不能将.dll嵌入到exe中呢?答案肯定是可以滴,下面就介绍做法。二、libs文件夹在工程目录中,新建一个libs文件夹,将你要引用的dll放进来。三、添加dll引用,设置不复制添加dll引用原创 2020-10-20 19:55:36 · 1946 阅读 · 3 评论 -
通过NamedPipe命名管道实现进程间通信(C#实现,包括客户端和服务端)
文章目录一、前言二、关于命名管道三、运行效果四、Demo工程源码五、核心代码一、前言最近在做一个这样的功能,Unity发布PC平台的客户端exe,在客户端exe中拉起浏览器exe(这个浏览器是自己使用winform实现的),浏览器内调用JsApi执行支付,支付结果会回调游戏服务端URL,服务端通过消息通知客户端exe,此时客户端exe通过进程间通信让浏览器exe关闭。好了,进程间怎么通信呢?实现进程间通信有很多中方案:管道(pipe)、命名管道(FIFO)、消息队列(MessageQueue)、共享原创 2020-10-16 11:30:07 · 5517 阅读 · 0 评论 -
用C#实现一个zip解压功能,无需引入dll(可直接放到Unity中使用)
文章目录一、前言二、使用三、Unzip源码一、前言最近在搞C#的winform窗体应用实现一个微型下载器功能。过程中需要解压文件,又不想引入一个dll,从GitHub上找到了一个UnZip库源码,实测可用。二、使用解压using (var unzip = new Unzip("./test.zip")){ unzip.ExtractToDirectory("./test");}三、Unzip源码// Unzip class for .NET 3.5 Client Profile原创 2020-10-15 14:45:31 · 863 阅读 · 1 评论 -
用C#实现一个迷你json库,无需引入dll(可直接放到Unity中使用)
文章目录一、前言二、使用三、迷你json库代码一、前言最近在搞C#的winform窗体应用实现一个微型下载器功能。过程中需要解析json数据,又不想引入一个dll,从GitHub上找到了一个json库源码,并做了微调,实测可用。二、使用例1JSONObject jsonObj = new JSONObject();jsonObj["key_1"] = "value_1";jsonObj["key_2"] = 666;string jsonStr = JSONConvert.Serialize原创 2020-10-15 14:35:28 · 1698 阅读 · 0 评论 -
使用C#制作Windows窗体应用,实现一个微端下载器功能(多线程/断点续传/微端/下载器)
一、前言在PC端的QQ游戏大厅下载游戏的时候,我们会发现很多游戏都自己做了微端下载器,就是在先下载一个1~2M的下载器,然后再通过这个下载器去下载游戏。那么,微端下载器用什么来制作呢?可以有很多制作方案。本文我教你通过C#制作Windows窗体应用来实现微端下载器功能。二、最终运行效果如下, 最终运行效果我把窗口的标题栏隐藏了,因为默认的标题栏不是很好看,如果想显示标题栏,只需将工程中的Form1.cs中下面这行代码注释掉即可。三、Demo工程下载Demo工程我已上传到CODE CHIN原创 2020-10-11 17:58:10 · 2065 阅读 · 0 评论 -
Unity显示base64识别码图片(base64图片、验证码)
文章目录一. 关于Base64二. 图片的Base64编码三. 图片在线Base64编解码四. Unity中如何显示Base64图片一. 关于Base64目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。Base64到底起到什么作用呢?在参数传输的过程中经常遇到的一种情况:使用全英文的没问题,但一旦涉及到中文就会出现乱码情况。与此类似,网络上传输的字符并不全是可打印的...原创 2020-03-14 22:46:16 · 2599 阅读 · 1 评论 -
运算符重载
转载注明出处:连接1: 点击打开链接 连接2:点击打开链接operatoroperator 关键字用于在类或结构声明中声明运算符。运算符声明可以采用下列四种形式之一:public static result-type operator unary-operator ( op-type operand )public static result-type oper转载 2016-06-11 10:11:19 · 421 阅读 · 0 评论 -
c#的delegate和event
delegate是什么委托(delegate) 是存有对某个方法的引用的一种引用类型变量,引用可在运行时被改变。如果不好理解,可以把委托理解成为函数指针,但它们是有区别的。delegate和C++中的函数指针:函数指针只能指向静态函数,而delegate既可以引用静态函数,又可以引用非静态成员函数。在引 用非静态成员函数时,delegate不但保存了对此函数入口指针的引用,而且还保存了...原创 2019-02-21 13:47:08 · 2395 阅读 · 2 评论 -
Unity 代码混淆: CodeGuard的使用
CodeGuard使用CodeGuard工具,可以对Unity项目的C#代码进行混淆(支持Android和iOS)。建议混淆变量和属性即可,函数的混淆要谨慎,很容易逻辑出问题。CodeGuard下载地址:http://download.csdn.net/detail/kaitiren/9101453使用方法将CodeGuard导入到unity工程中打开Window->...原创 2017-04-25 20:51:38 · 10143 阅读 · 8 评论 -
Unity通过反射给gameObject添加组件
C#版本public static Component AddComponent(GameObject go, string assembly, string classname){ var asmb = System.Reflection.Assembly.Load(assembly); var t = asmb.GetType(assembly + "." + clas...原创 2019-01-21 17:38:19 · 2605 阅读 · 0 评论 -
Unity C#执行bat脚本
我们先封装一下接口,如下,把EdtUtil.cs放置在Assets/Editor目录中// EdtUtil.csusing System;using UnityEditor;using UnityEngine;using System.Collections.Generic;using System.IO;using System.Threading;using Syste...原创 2017-12-01 19:52:06 · 5828 阅读 · 1 评论 -
手把手教你实现Unity与Android的交互
首先新建一个android工程包名与unity的包名相同比如我这里叫com.example.myjavatest好了然后引入Unity的classes.jar包classes.jar包在Unity安装目录\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Development\Classes我...原创 2017-06-03 15:11:17 · 2965 阅读 · 0 评论 -
腾讯MSDK手Q微信授权登录
首先本地保存一个OpenId和accessToken,不用每次都进行授权每次登录时先检查本地是否有OpenId和accessToken,如果没有,则调用MSDK接口tencentLogin(int platform)参数platform :1 手Q 2 微信MSDK回调TencentLoginRet(string ret)参数为:数字@数字第一个数字是状态,0:OK原创 2015-07-04 13:52:45 · 10260 阅读 · 0 评论 -
Unity文件操作路径
Application.dataPathApplication.streamingAssetsPathApplication.persistentDataPathApplication.temporaryCachePath在个平台下的具体路径如下: Application.dataPath Application.streamingAssetsPath A...原创 2016-06-15 11:07:04 · 36066 阅读 · 2 评论 -
使用脚本将Unity的ogg音效全部改为2d音效
[MenuItem("将所有3D音效改成2D音效")]static void change3DMusicTo2D(){ string[] fs = GetSoundMetaFile(); bool hasChangeFile = false; foreach(var f in fs) { if(MakeSoundMetaFile3DFalse(...原创 2016-05-27 22:00:04 · 2513 阅读 · 0 评论 -
如何设置Atlas的Texture
转载注明出处:点击打开链接很多人在使用NGUI的时候,发布到设备上时发现图片变得模糊,下面就是简单的方法来修正这个问题。方法一:1、设置Texture Type为GUI2、Max Size,取决于你的目标平台,一般控制在2048的话可以适合大多数移动平台3、Format,取决于你图片的原始质量,Automatic Truecolor效果是最好转载 2016-06-11 21:32:53 · 1143 阅读 · 0 评论 -
Unity3D性能优化
转载注明出处:点击打开链接一、概念1.1 drawcall是啥?其实就是对底层图形程序(比如:OpenGL ES)接口的调用,以在屏幕上画出东西。所以,是谁去调用这些接口呢?CPU。1.2 fragment是啥?经常有人说vf啥的,vertex我们都知道是顶点,那fragment是啥呢?说它之前需要先说一下像素,像素各位应该 都知道吧?像素是构成数码影像的基本单元呀。那frag转载 2016-06-11 17:02:09 · 1156 阅读 · 0 评论 -
Unity使用CodeGuard进行c#代码混淆遇到的一个坑: 父子类混淆
最近Unity的项目中要做代码混淆,于是使用了CodeGuard工具进行代码混淆关于CodeGuard:https://blog.csdn.net/linxinfa/article/details/70767114混淆的时候,我还特意过滤了那些含有tween,coroutine,和反射相关的用法的类,因为它们都可以通过字符串来调用方法,如果混淆的话,就会出现问题。好,开始打包,CodeG...原创 2019-03-01 16:08:04 · 2296 阅读 · 0 评论 -
如何通过反射调用内部静态函数
我们用ILSpy反编译UnityEditor.dll,假设现在我们想要调用UnityEditor.EditorGUIUtility的这个DrawHorizontalSplitter方法,因为它是internal的,科普:internal(内部)关键字是类型和类型的成员访问修饰符。只有在同一程序集中可访问,可以跨类。注:ILspy是一个开源的.net反编译软件,使用十分方便,下载地址:h...原创 2019-02-20 16:05:45 · 2034 阅读 · 0 评论 -
C#用正则表达式去匹配被双引号包起来的中文
假设现在我们需要检测一个字符串中是否含有中文,可以使用正则表达式例子:string text = "我是中文";string pattern = "(?<=\")([\u4e00-\u9fa5]+)(?=\")";if(Regex.IsMatch(text,pattern)){ var m =Regex.Match(text,pattern); var res = m....原创 2017-02-05 14:57:55 · 4942 阅读 · 0 评论 -
C# Socket模块
服务端using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Runtime.InteropServices;using System.Net;using System.Net.Soc原创 2015-06-12 11:02:06 · 944 阅读 · 0 评论 -
C# 正则表达式校验IP格式
校验IP格式public static bool ValidateIPAddress(string ipAddress){ Regex validipregex = new Regex(@"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5...转载 2019-08-12 16:46:30 · 4364 阅读 · 0 评论 -
C#中FileStream和StreamWriter/StreamReader的区别
区别FileStream 对象表示在磁盘或网络路径上指向文件的流。这个类提供了在文件中读写字节的方法。但经常使用 StreamReader 或 StreamWriter 执行这些功能。这是因为 FileStream 类操作的是字节和字节数组,而 StreamReader 或 StreamWriter 操作的是字符数据。操作byte数据时要用FileStreamstring textC...原创 2019-07-09 18:00:14 · 2791 阅读 · 0 评论 -
Unity C# 数字格式化(保留小数位、数字前面补零)
保留小数位(四舍五入)float a = 3.563262f;Debug.Log(a.ToString("我是#0.0"));数字前面补零int a = 9;Debug.Log(string.Format("我是{0:00}", a));原创 2019-07-09 15:05:05 · 11960 阅读 · 0 评论 -
c#通过网络读取json数据,明明格式正确,却报格式错误的问题
遇到一个奇怪的问题,c#通过网络读取json数据,打印出来的字符串格式符合json格式[ { "ip": "192.168.0.8", "port": 8844, "name": "一区1服" }, { "ip": "192.168.0.8", "port": 8845, "name": "一区2服" }]但是通过LitJson库使用var jd = Js...原创 2019-05-31 15:40:15 · 2263 阅读 · 0 评论 -
关于protobuf (protobuf-net版)
protobuf 简介Protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言。支持多种编程语言,现:Java、c#、c++、Go 和 Python。基于二进制,因此比传统的XML表示高效短小得多 。protobuf 应用场景作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。个人认为,主要用于数...原创 2019-05-25 15:55:30 · 2507 阅读 · 0 评论 -
C#中AES加密的实现
转载注明出处: https://www.jianshu.com/p/6db0395c729cAES算法简介高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研...转载 2019-05-08 19:43:05 · 8405 阅读 · 1 评论 -
Mono为何能跨平台
概念JIT 编译 (JIT compilation),运行时需要代码时,将 Microsoft 中间语言 (MSIL) 转换为机器码的编译。CLR (Common Language Runtime)是通用语言运行时。和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集等),并保证应用和底层操作系统之间必要的分离。机器码 (machine code),学名机器语言指令,...转载 2019-04-24 14:00:10 · 1272 阅读 · 0 评论 -
Unity中C#如何执行cmd命令(System.Diagnostics.Process的使用)
在Unity中,我们可能需要自己写Editor工具。有时候我们可能还需要执行外部指令或者脚本(比如python脚本),这个时候,就需要用c#的System.Diagnostics.Process这个类了。命名空间usingSystem.Diagnostics;Process.Star()的构造方法名称 说明 Process.Start () 启动(或重用)此...原创 2016-10-31 14:51:27 · 12575 阅读 · 1 评论 -
C#如何通过反射获取方法以及动态调用方法
假设我们现在有下面这个类TestClassnamespace TestSpace{ public class TestClass { private string _value; public TestClass(){} public TestClass(string value) { ...原创 2017-01-21 20:38:15 · 2712 阅读 · 0 评论 -
检测预设资源是否有UIFont为空的编辑器
using UnityEngine;using System.Collections;using System.Collections.Generic;using UnityEditor;public class UIFontChecker : EditorWindow{ [MenuItem("GameTools/UIFontChecker")] public sta原创 2016-06-08 17:55:06 · 629 阅读 · 0 评论 -
递归调用示例
遍历物体的所有节点并调用某托管函数public void walk(this GameObject o,System.Action f){ f(o); int cnt = o.transform.childCount; for(int i=0;i<cnt;++i) { walk(o.transform.GetChild(i).gameObject,f); }}原创 2016-06-08 15:05:52 · 656 阅读 · 0 评论 -
Unity使用HttpWebRequest远程下载文件
using UnityEngine;using System.Collections;using System.Net;using System.IO;public class FileLoader : BaseBehaviour { void Start () { m_httpReq = (HttpWebRequest)HttpWebRequest....原创 2016-04-08 15:51:08 · 4411 阅读 · 0 评论 -
unity3d 根据手指触摸的位置去放置UI
private Vector3 m_uiWroldPos; void Update() { if (Input.GetMouseButton(0)) { m_uiWroldPos=UICamera.mainCamera.ScreenToWorldPoint( new Vector3(原创 2015-06-06 18:42:50 · 2259 阅读 · 0 评论
分享