从目前所掌握的资料来看,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# 刻度:毫米 英寸 像素转换的更多相关文章

  1. C#中毫米与像素的换算方法

    C#中以像素作为尺寸单位,像素是一种相对的尺寸概念,与毫米的转换与当前显示器的分辨率有关.在不同分辨率下转换的系数不同. 借助GDI可以完成毫米至像素的转换. public static double ...

  2. PixelUtils:像素转换工具

    /** 像素转换工具 */ public class PixelUtils { /** * The context. */ private static Context mContext = Cust ...

  3. FFmpeg(四) 像素转换相关函数理解

    一.基本流程 1.sws_getCachedContext();//得到像素转换的上下文 2.sws_scale()://进行转换 二.函数说明 1.SwsContext *vctx = NULL;  ...

  4. iOS关于图片点到像素转换之杂谈

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 不管是以什么方法生成的图片,是从磁盘上读取的,还是从其他对象中 ...

  5. ASP.NET Core WebApi中简单像素转换跟踪实现

    像素跟踪虽然是最早用于跟踪营销转换的方法,但它仍然被广泛使用,像Facebook这样的大公司仍然将其视为跟踪网页转换的方法之一. 由于它的简单性,通过像素方法的跟踪转换仍然被广泛使用.它不需要任何复杂 ...

  6. 毫米转像素dpi

    public static double MillimeterToPixel_X(double length) //length是毫米,1厘米=10毫米 { System.Windows.Forms. ...

  7. 像素转换mm

    public static double MillimetersToPixelsWidth(double length) //length是毫米,1厘米=10毫米 { System.Windows.F ...

  8. 像素转换问题-队列解决办法(或者dfs)

    在一定大小的像素图像中,将同色区域的颜色值替换为其他颜色值,从而产生新的图像,输入数据,图像大小,指定的像素点坐标,要替换成的颜色. 一开始出队操作写错了折腾半天,当队列中只有一个元素是出队后要将队首 ...

  9. js厘米与英寸尺码转换

    <style type="text/css"> #txt_cm1, #txt_inch1, #txt_inch2, #txt_cm2 { width: 63px; he ...

随机推荐

  1. SOA资料

    实施: 基于J2EE体系架构搭建符合SOA架构的运营管理平台 成功经验: 携程旅行网在SOA架构方面的探索 SOA在互联网系统中的应用

  2. [JavaEE] Hibernate ORM

    一. Hibernate的简要介绍 Hibernate是轻量级Java EE应用的持久层解决方案,Hibernate不仅管理者Java类到数据库表的映射(包括Java 数据类型到SQL数据类型的映射) ...

  3. org-reveal

    环境: Debian 8 Emacs 24.4 org-reveal是在emacs org-mode中使用reveal.js的一个插件. emacs 24.4自带的org版本是8.2.10,这个版本似 ...

  4. c++的输入流基础知识

    cin是istream类的对象,它从标准输入设备获取数据,程序中的变量通过流提取符“>>”从流中提取数据.从流中提取数据时通常跳过输入流中的空白符   只有在输入完数据并按回车后,该行数据 ...

  5. 强大的JQuery(二)--动画效果

    上篇博客我们讲过了jquery的基础知识--强大的JQuery(一)--基础篇,作为web开发人员,网页的动画效果是不可缺少的,本篇博客重点来说说jquery的动画效果的实现. 因为动画的效果不能截图 ...

  6. 在Mac OS X上安装Ionic

    安装xcode(从app store下载,用于编译调试ios平台app) 安装node.js(npm) 安装ionic(sudo npm install -g ionic) 安装cordova(sud ...

  7. CSAPP2e:Shell lab 解答

    期中之后的第一个lab 就是实现一个简单的Shell 程序,程序的大部分已经写好,只需要实现 eval 函数和处理信号的sigchld_handle, sigint_handle, sigtstp_h ...

  8. 深入浅出ExtJS 第三章 表格控件

    3.1 表格的特性简介 >.Ext中的表格功能:包括排序/缓存/拖动/隐藏某一列/自动显示行号/列汇总/单元格编辑等实用功能; >.表格由类Ext.grid.GridPanel定义,继承自 ...

  9. 出现,视图必须派生自 WebViewPage 或 WebViewPage错误解决方法

    遇到这种问题是因为我新建了Areas,在Areas里面建Controllers,Models,Views.所以在View文件夹下面湿没有Web.config文件的. 解决方法:(复制views中的we ...

  10. TransmitFile下载文件(部分转载)

    例子代码: public void Down() { TransmitFile(@"/File/KBPub.zip"); } public void TransmitFile(st ...