c# 刻度:毫米 英寸 像素转换
从目前所掌握的资料来看,c#程序中将毫米转换像素的方法无非两种:
第一种:
1: /// <summary>
2: /// 以毫米为单位的显示宽度
3: /// </summary>
4: const int HORZSIZE = 4;
5: /// <summary>
6: /// 以像素为单位的显示宽度 0~65535
7: /// </summary>
8: const int HORZRES = 8;
9: const int LOGPIXELSX = 88;
10: const int LOGPIXELSY = 90;
11: public static double MillimetersToPixelsWidth(IntPtr handle, double length) //length是毫米,1厘米=10毫米
12: {
13: System.Drawing.Graphics g = System.Drawing.Graphics.FromHwnd(handle);
14: IntPtr hdc = g.GetHdc();
15: int width = GetDeviceCaps(hdc, HORZSIZE); // HORZRES
16: int pixels = GetDeviceCaps(hdc, HORZRES); // BITSPIXEL
17: g.ReleaseHdc(hdc);
18: return (((double)pixels / (double)width) * (double)length);
19: }
20:
21: [System.Runtime.InteropServices.DllImport("gdi32.dll")]
22: private static extern int GetDeviceCaps(IntPtr hdc, int Index);
此种方法计算的值与实际刻度相比:10mm=实际刻度8mm
以此技术的程序:桌面刻度尺
技术文章引用:http://hi.baidu.com/kingcham/item/b3653ce0c69756216dabb8cd
在文章中所说的
GDI中有一个函数是GetDeviceCaps(),可以获取一些关于设备的一些属性,如HORZSIZE/HORZRES/LOGPIXELSX等。
以上三者的关系通常满足:HORZSIZE = 25.4 * HORZRES/LOGPIXELSX
但是在程序中却无法满足该条件。
第二种:
1: /// <summary>
2: /// 1英寸=25.4毫米
3: /// </summary>
4: const double millimererTopixel = 25.4;
5:
6: public static double MillimeterToPixel(IntPtr handle, double length) //length是毫米,1厘米=10毫米
7: {
8: System.Windows.Forms.Panel p = new System.Windows.Forms.Panel();
9: System.Drawing.Graphics g = System.Drawing.Graphics.FromHwnd(handle);
10:
11: //1英寸=25.4mm=96DPI,那么1mm=96/25.4DPI
12: return (((double)g.DpiX / millimererTopixel) * (double)length);
13: }
此种方法是根据网上的换算关系得来的。得到的值与实际刻度相比:180mm=实际刻度185mm
以此技术的程序:夏克屏幕刻度尺
以目前而言,还无法准确的进行转换,从而绘制标准刻度尺。如果各位有更好的方法,还望提示下,先谢谢了。
c# 刻度:毫米 英寸 像素转换的更多相关文章
- C#中毫米与像素的换算方法
C#中以像素作为尺寸单位,像素是一种相对的尺寸概念,与毫米的转换与当前显示器的分辨率有关.在不同分辨率下转换的系数不同. 借助GDI可以完成毫米至像素的转换. public static double ...
- PixelUtils:像素转换工具
/** 像素转换工具 */ public class PixelUtils { /** * The context. */ private static Context mContext = Cust ...
- FFmpeg(四) 像素转换相关函数理解
一.基本流程 1.sws_getCachedContext();//得到像素转换的上下文 2.sws_scale()://进行转换 二.函数说明 1.SwsContext *vctx = NULL; ...
- iOS关于图片点到像素转换之杂谈
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 不管是以什么方法生成的图片,是从磁盘上读取的,还是从其他对象中 ...
- ASP.NET Core WebApi中简单像素转换跟踪实现
像素跟踪虽然是最早用于跟踪营销转换的方法,但它仍然被广泛使用,像Facebook这样的大公司仍然将其视为跟踪网页转换的方法之一. 由于它的简单性,通过像素方法的跟踪转换仍然被广泛使用.它不需要任何复杂 ...
- 毫米转像素dpi
public static double MillimeterToPixel_X(double length) //length是毫米,1厘米=10毫米 { System.Windows.Forms. ...
- 像素转换mm
public static double MillimetersToPixelsWidth(double length) //length是毫米,1厘米=10毫米 { System.Windows.F ...
- 像素转换问题-队列解决办法(或者dfs)
在一定大小的像素图像中,将同色区域的颜色值替换为其他颜色值,从而产生新的图像,输入数据,图像大小,指定的像素点坐标,要替换成的颜色. 一开始出队操作写错了折腾半天,当队列中只有一个元素是出队后要将队首 ...
- js厘米与英寸尺码转换
<style type="text/css"> #txt_cm1, #txt_inch1, #txt_inch2, #txt_cm2 { width: 63px; he ...
随机推荐
- 2. Android框架和工具之 Volley
Java基础知识强化之网络编程笔记23:Android网络通信之 Volley(Google开源网络通信库)
- android 内存优化以及性能优化相关问题
最近做一个android 的应用程序 总是出现内存高 和cpu高的问题困扰了好多天. 下面为自己从网上总结的和自己找到的问题. 1. WebView 控件: 使用了 WebView 控件一定要注意清 ...
- 【Mood-5】14条建议,使你的IT职业生涯更上一层楼
升值为企业IT部门的领导者,并非一件易事.从一般大众中脱颖而出,则更不容易. 2013是一个好年头,据专家报告显示,6月所有新工作中,10%来自技术领域.这对于那些希望高升.换岗.跳槽的IT技术人员来 ...
- Android下拉刷新-SwipeRefreshLayout,RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout)
SwipeRefrshLayout是Google官方更新的一个Widget,可以实现下拉刷新的效果.该控件集成自ViewGroup在support-v4兼容包下,不过我们需要升级supportlibr ...
- EasyUI设置复选框单选操作
Html 代码: <td align="left" colspan="2"> <input type=& ...
- Linux_内存查询
查询磁盘使用情况: [root@css-management ~]# df -hl 文件系统 容量 已用 可用 已用% 挂载点 Filesystem Size Used Avail Use% Moun ...
- 转: ios app架构设计
http://keeganlee.me/post/architecture/20160107 看完这一系列文章后就知道怎么回答这类问题了: App架构设计经验谈:接口的设计 App架构设计经验谈:技术 ...
- Linux 字符设备控制技术
字符设备控制技术 一.字符设备控制理论 1.作用 大部分设备除了具有<读写设备>的能力,还应该有<控制设备>的能力.比如改变 波特率 2. 应用程序接口 在用户空间中使用 Io ...
- SQL server 2008 建立新用户
进入Instance下的‘安全性’->登录名, 可以选择SQL server 验证,‘强制实施密码策略’.’状态‘ 为启用. 在使用的数据库下‘安全性’->登录名,选择‘登录名’,输入之前 ...
- android百度地图中的地图缩放级别
前期搭建百度地图的环境就不说了,网上一搜一大把,这里只讲地图的缩放,大神可以直接绕道 首先在类的内部初始化一个百度地图的对象 private BaiduMap mBaiduMap; 然后在OnCrea ...