最近用到c#中輸出影象,需要確定影象實際寬高,網上找資料,大部分是說先獲取實際寬度,然後獲取寬方向的畫素點數,計算比例即可。但獲取到的寬度跟我測量的螢幕寬度不一致。dpi倒是獲取正確,最後繞一圈使用了如下寫法, 計算出來正確的寬度:
system.windows.forms.panel p = new system.windows.forms.panel();
system.drawing.graphics g = system.drawing.graphics.fromhwnd(p.handle);
intptr hdc = g.gethdc();
int width = getdevicecaps(hdc, 4); // horzres
int pixels = getdevicecaps(hdc, 8); // bitspixel
int dpi = getdevicecaps(hdc, 88);
width =(int)( pixels * 25.4 / dpi);
g.releasehdc(hdc);
return (((double)pixels / (double)width) * (double)length);
C 畫素和公釐轉換
公釐 畫素 dpi 25.4 畫素 公釐數 25.4 dpi 核心 單位轉換類 公釐數 畫素 dpi 25.4 畫素 公釐數 25.4 dpi public class toolunitconversion 建構函式 物件 1 獲取顯示器的 dpi 2 獲取的 dpi public toolunit...
c 刻度 公釐 英吋 畫素轉換
從目前所掌握的資料來看,c 程式中將公釐轉換畫素的方法無非兩種 第一種 2 以公釐為單位的顯示寬度3 4 const int horzsize 4 5 6 以畫素為單位的顯示寬度 0 655357 8 const int horzres 8 9 const int logpixelsx 88 10 ...
C 中公釐與畫素的換算方法
c 中以畫素作為尺寸單位,畫素是一種相對的尺寸概念,與公釐的轉換與當前顯示器的解析度有關。在不同解析度下轉換的係數不同。借助gdi可以完成公釐至畫素的轉換。public static double millimeterstopixelswidth double length dllimport gd...