随笔分类 -  C#

摘要:对于数码相机所拍摄出的图片,Exif信息非常重要.参考网上的文章,结合我的实际需求,整理了一下,一共三个类文件EXIFextractor .cs,Translation.cs,EXIFMetaData,cs (Translation.cs,EXIFMetaData,cs 参看用C#读取图片的EXIF信息2) ///EXIFextractor .cs using System;using System.Text;using System.Collections;using System.Drawing.Imaging;using System.Reflection;using System.IO 阅读全文
posted @ 2012-08-30 11:07 许明吉博客 阅读(3372) 评论(1) 推荐(3) 编辑
摘要:public void FindExifinfo(string filePath){ Image img = Image.FromFile(filePath); PropertyItem[] pt = img.PropertyItems; for (int i = 0; i < pt.Length; i++) {PropertyItem p = pt[i]; switch (pt[i].Id){ // 设备制造商 20. ... 阅读全文
posted @ 2012-08-29 18:28 许明吉博客 阅读(1070) 评论(0) 推荐(1) 编辑
摘要:[转]C#读取EXIF信息类ExifWorksusing System;using System.Collections.Generic;using System.Text;namespace ExifWorks{// // Utility class for working with EXIF data in images. Provides abstraction// for most common data and generic utilities for work with all other. // // // Copyright (c) Michal A. Valáše 阅读全文
posted @ 2012-08-29 18:21 许明吉博客 阅读(5914) 评论(0) 推荐(0) 编辑
摘要:以前整理的Win32API,可以直接在C#中直接调用,在做WinForm时还是很有帮助的。以前用在一个多窗口界面中,当轮询窗口时,调用API会提高很多效率。 源码下载 http://files.cnblogs.com/lordeo/win32api.rar 源码包含三个文件Win32API.cs,Enums.cs,Structs.cs分别如下 Win32API.cs using System;using System.Drawing;using System.Runtime.InteropServices;using Lordal.Window.Form.Lib.General;using L 阅读全文
posted @ 2012-06-29 14:24 许明吉博客 阅读(20155) 评论(0) 推荐(4) 编辑
摘要:根据一副 png 图片绘制半透明窗体时,用了 WS_EX_LAYERED 后当前窗体再也不会处理 paint 事件,所以所含的子控件是一辈子也不会画出来的,但是这个控件确实存在,而且可以响应事件 。而此时 windows 画制窗体是使用 UpdateLayeredWindow 这个 api 函数的。 对于按钮,完全可以自己画两个图片然后盖在 button 上面,通过处理 button 的 enter 和 leave 消息来切换者两个图片来表达按钮状态 对于输入框..这个可以用一个让任何人看了都生气地办法,那就是....两个窗体,的确别人就是这么做的 可以用一个空心窗体只显示该显示的控件,然后. 阅读全文
posted @ 2012-01-12 16:30 许明吉博客 阅读(2415) 评论(0) 推荐(0) 编辑
摘要:最近在网上发现这篇文章,看看自己的编程习惯掌握了多少?1. 避免将多个类放在一个文件里面。 2. 一个文件应该只有一个命名空间,避免将多个命名空间放在同一个文件里面。3. 一个文件最好不要超过500行的代码(不包括机器产生的代码)。 4. 一个方法的代码长度最好不要超过25行。5. 避免方法中有超过5个参数的情况。使用结构来传递多个参数。 6. 每行代码不要超过80个字符。 7. 不要手工的修改机器产生的代码。 a) 如果需要编辑机器产生的代码,编辑格式和风格要符合该编码标准。b) Use partial classes whenever possible to factor out the 阅读全文
posted @ 2012-01-11 09:55 许明吉博客 阅读(1514) 评论(0) 推荐(0) 编辑
摘要:http://download.csdn.net/detail/wangwenzhuang/2943282 阅读全文
posted @ 2012-01-04 22:29 许明吉博客 阅读(1052) 评论(0) 推荐(0) 编辑
摘要:private string GetMD5Hash(string input) { System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider(); byte[] bs = System.Text.Encoding.UTF8.GetBytes(input); bs = x.ComputeHash(bs); System.Text.StringBuilder... 阅读全文
posted @ 2011-10-28 13:48 许明吉博客 阅读(362) 评论(0) 推荐(0) 编辑
摘要:以下四个函数和一个结构体声名;实现操作结构体文件的实例 /// <summary> /// 导入等值线文件 (主要是读取结构体文件信息) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void bt_AsgFileLoadin_Click(object sender, EventArgs e) { string file_types = "等值线分级 阅读全文
posted @ 2011-08-26 15:59 许明吉博客 阅读(3628) 评论(0) 推荐(0) 编辑
摘要:System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonApplicationData) 阅读全文
posted @ 2011-08-16 16:39 许明吉博客 阅读(7863) 评论(1) 推荐(0) 编辑
摘要:使用NAnt构建入门前言:NAnt是一项开源的项目,利用NAnt,你可以方便快捷地对自己.NET项目或解决方案进行自动构建。与VS中可视化化极强的项目和解决方案管理相比,NAnt只能命令行的方式操作,但是这并不影响Nant的流行。NAnt可以根据我们的需要,帮我们自动构建项目,比如创建文件夹,移动文件,运行指定的程序等等,这些都是VS无法办到的。 范例代码:/Files/gpcuster/NAntDemo.rar正文:如果你的机器上没有安装NAnt,请先到http://nant.sourceforge.net下载,并安装到机器上。由于NAnt是基于命令行的工具,所以,我们第一步需要配置环境变量 阅读全文
posted @ 2011-08-15 13:52 许明吉博客 阅读(1032) 评论(0) 推荐(0) 编辑
摘要:C# 自动编译 阅读全文
posted @ 2011-08-15 11:37 许明吉博客 阅读(3984) 评论(0) 推荐(0) 编辑
摘要:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 阅读全文
posted @ 2011-08-08 23:05 许明吉博客 阅读(2371) 评论(0) 推荐(0) 编辑
摘要:CLRInsideOut 托管代码与非托管代码互操作,产生相关调用代码的好工具C++ 头文件转C# 的好工具http://download.csdn.net/source/2914818 阅读全文
posted @ 2011-08-04 13:43 许明吉博客 阅读(2715) 评论(0) 推荐(0) 编辑
摘要:Shortcut to winsiggen.exe 阅读全文
posted @ 2011-07-22 17:33 许明吉博客 阅读(787) 评论(0) 推荐(0) 编辑
摘要:if ((Control.ModifierKeys & Keys.Control) == Keys.Control) //判断Ctrl键if ((Control.ModifierKeys & Keys.Control) == Keys.Control && e.KeyCode == Keys.V)//判断Ctrl+V键if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift)//判断Shift键if ((Control.ModifierKeys & Keys.Alt) == Keys.Alt)// 阅读全文
posted @ 2011-07-18 18:08 许明吉博客 阅读(5080) 评论(0) 推荐(0) 编辑
摘要:最近用c#写一个小软件,要调用VC写的dll,传递参数给dll,由于是非托管代码,所以调用起来有点麻烦,要把参数转换成非托管代码的指针参数,然后再传递给dllview plaincopy to clipboardprint?usingSystem.Runtime.InteropServices;//操作Dll的类空间 classCGicomIndex{[DllImport("Index_dll.dll")]unsafeprivatestaticexternInt32create_index_file(IntPtrfilename,IntPtrfieldname,UInt32 阅读全文
posted @ 2011-07-06 11:55 许明吉博客 阅读(17666) 评论(1) 推荐(0) 编辑
摘要:1. 避免将多个类放在一个文件里面。2. 一个文件应该只有一个命名空间,避免将多个命名空间放在同一个文件里面。3. 一个文件最好不要超过500行的代码(不包括机器产生的代码)。4. 一个方法的代码长度最好不要超过25行。5. 避免方法中有超过5个参数的情况。使用结构来传递多个参数。6. 每行代码不要超过80个字符。7. 不要手工的修改机器产生的代码。a) 如果需要编辑机器产生的代码,编辑格式和风格要符合该编码标准。b) Use partial classes whenever possible to factor out the maintained portions.8. 避免利用注释解释显 阅读全文
posted @ 2011-06-22 18:10 许明吉博客 阅读(273) 评论(0) 推荐(0) 编辑
摘要:数组-->集合-->泛型(1)数组1. 数组数据结构是System.Array类的一个实例.2. System.Array类的语法为[SerializableAttribute] [ComVisibleAttribute(true)] public abstract class Array : ICloneable, IList, ICollection, IEnumerable3. 下面看一个使用数组的例子(我称之为隐式实现)protected void Page_Load(object sender, EventArgs e){ string[] strArrName = ne 阅读全文
posted @ 2011-06-14 10:10 许明吉博客 阅读(1420) 评论(0) 推荐(0) 编辑