日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

c# 刻度:毫米 英寸 像素转换

發布時間:2023/12/15 综合教程 36 生活家
生活随笔 收集整理的這篇文章主要介紹了 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# 刻度:毫米 英寸 像素转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。