簡介
DirectX介紹:
函式功能:獲取指定設備的性能參數該方法將所取得的硬體設備信息保存到一個D3DCAPS9結構中。
函式原型:int GetDeviceCaps(HDC hdc, int nlndex);
函式返回值:int, 設備相關信息的尺寸大小
Directx 聲明:
GetDeviceCaps(
UINT Adapter,
D3DDEVTYPE DeviceType
D3DCAPS8*pCaps
)
int GetDeviceCapsint GetDeviceCaps( HDC hdc, int nIndex);
nIndex得值參看wingdi.h.包含有(DRIVERVERSION/TECHNOLOGY/HORZSIZE/VERTSIZE等,頭檔案中有相應的解釋)
說明
根據指定設備場景代表的設備的功能返回信息
參數 | 類型及說明 |
hdc | Long,要查詢其設備的信息的設備場景 |
nIndex | Long,根據GetDeviceCaps索引表所示常數確定返回信息的類型 |
C++參數
1、hdc:設備上下文環境的句柄。
2、nIndex:指定返回項,該參數取下列一值。(C++)
DRIVERVERSION:設備驅動程式版本。
TECHNOLOGY:設備技術,它可以是下列一值:
DT_PLOTTER:矢量繪圖儀;DT_RASDISPLAY:光柵顯示器;
DT_RASPRINTER:光柵印表機;DT_RASCAMERA:光柵照相機;
DT_CHARSTREAM:字元流;DT_METAFILE:圖元檔案;
DT_DISPFILE:顯示器檔案。
如果hdc參數指定圖元檔案的設備上下文環境,則設備技術就是給CreateEnhMetaFile函式的引用設備,使用GetObjectType函式可以確定它是否是一增強元檔案設備上下文環境。
HORZSIZE:物理螢幕的寬度(毫米);VERTSIZE:物理螢幕的高度(毫米);HORZRES:螢幕的寬度(像素);
VERTRES:螢幕的高度(光柵線);
LOGPIXELSX:沿螢幕寬度每邏輯英寸的像素數,在多顯示器系統中,該值對所顯示器相同;
LOGPIXELSY:沿螢幕高度每邏輯英寸的像素數,在多顯示器系統中,該值對所顯示器相同;
BITSPIXEL:像素相連顏色位數;PLANES:顏色位面數;NUMBRUSHES:設備指定畫刷數;
NUMPENS:設備指定筆數;NUMFONTS:設備指定字型數;
NUMCOLORS:設備顏色表的入口數,如果設備的色深不超過8位像素。對於超過色深的設備返回-1;
ASPECTX:用於畫線的設備像素的相對寬度;ASPECTY:用於畫線的設備像素的相對高度;
ASPECTXY:用於畫線的設備像素的對角線寬度;PDEVLCESIZE:保留;
CLIDCAPS:顯示設備支持剪下性能的標誌。如果設備可剪下為一個長方形,則為1,否則為0;
SIZEPALETTE:系統調色板中的入口數目,只有在設備驅動器在RASTERCAPS索引中設定RC PALETFE位時該索引值才是有效的。且該索引值只能用於16位Windows的驅動器;
NUMRESERVED:系統調色板中保留的入口數目,只有在設備驅動器在RASTERLAP索引中設定RC PALETFE位時,該索引值才是有效的且該索引值只有能於16位的Windows驅動器;
COLORRES:實際位像的實際設備顏色,只有設備驅動器在RASTERLAP索引中設定RCPALETFE位時,該索引值才是有效的且該索引值只能用於16位的Windows驅動器;
PHYSICALWIDTH:對於列印設備,為以設備單位的物理頁面寬度。例如一個在8.5*11紙上設定為600dpi的印表機的設備物理單位寬度值為5100,注意物理頁面總是大於可列印的頁面面積,且從不小於;
PHYSICALHEIGHT:為以設備單位的物理頁面寬度。例如一個在8.5*11紙上設定為600dpi的印表機的設備物理單位高度值為6600;
PHYSICALOFFSETX:對於列印設備,從物理頁面左邊到列印頁面左邊的距離,例如,一個在8.5*11紙上設定為600dpi的印表機,不能在超出左邊0.25處列印,且有一個150備單位的水平物理位移;
PHYSICALOFFSETY;對於列印設備。從物理頁面上面到列印頁面上邊的距離。例如一個在8.5*11列印紙上設定為的印表機,不能在超出上邊的地方打處,且有一個設備單位的物理位移;
VREFRESH:Windows NT:對於顯示設備。設備的當前垂直刷新率以每秒中的循環次數為單位0或1刷新率代表顯示硬體的預設刷新率,此預設刷新率通常通過設定顯示卡或主機板的跳線來改變,或通過一個不使用Win32顯示函式比如ChangeDisplay Setting的一個配置程式來設定;
DESKTOPHORZRES:Windows NT:可視桌面的以像素為單位的寬度。如果設備支持一個可視桌面或雙重顯示則此值可能大於VERTRES;
SCALINGFACTORX:印表機x軸的比例係數;SCALINGFACTORY:印表機y軸的比例係數。
BLTALIGNMENT:在Windows NT中作為像素倍數的水平繪圖調整,對於最好的繪圖操作,視窗繪圖應該是水平調整到此值的倍數。0顯示設備為加速的,且可用任何調整。
SHADEBLENDCAPS:在Windows 98、Windows NT 5.0和以後版本中此值顯示設備的陰影和混合特性。
SB_CONST_ALPHA:處理BLENDFUNCTION結構中的Source constantAlpha元素,並通過AlphaBlend數中的blendFunction參數來指定;
SB_GRAD_RECT:進行Gradientfill矩形填充的能力。SB_GRAD_TRI;進行Gradientfill三角形填充的能力;
SB_NONE:設備不支持這些特性中的任何一個。SB_PIXEL_ALPHA:處理AlphaBlond中每一個像素Alphx;
SB_PREMULT_ALPHA:在Alphablend中對alpha進行預乘;
RASTERCAPS:設備所支持的光柵性能,可以是下列值的某種組合;
RC_BANDING:需要聯合支持。RC_BITBLT:支持傳送點陣圖。
RC_BITMAP64:支持大於64K的點陣圖。RC_DI_BITMAP:支持SetDIBits和GetDIBits函式。
RC_DIBTODEV:支持SetDIBits To Device函式;RC_FLOODFILL:支持連續填充
RC_GDI20_OUTPUT:支持16位Windows 2.0特徵;RC_PALETTE:指定一個基於調色板的設備。
RC_SCALING:支持縮放;RC_STRETCHBLT:支持StretchBlt函式。
RC_STRETCHDIB:stretchDIBits函式。
CURVECAPS:顯示設備所支持的曲線性能,可以是下列值的某種組合。
CC_NONE:不支持繪製曲線;CC_CHORD:支持繪製弦;CC_CIRCLES:支持繪製圓。
CC_ELLIPSES:支持繪製橢圓;CC_INTERIORS:支持內部填充;CC_PIE:支持繪製扇形圖。
CC_ROUNDRECT:支持繪製圓角矩形;CC_STYLED:支持繪製帶風格的邊界。
CC_WIDE:支持繪製寬的邊界;CC_WIDESTYLED:支持繪製寬的、帶風格的邊界。
LINECAPS設備所支持的畫線性能,可以是下列值的某種組合:
LC_NONE:不支持繪製線段;LC_INTERIORS:支持內部填充;LC_MARKER:支持繪製標記符。
LC_POLYLINE:支持折線;LC_POLYMARKER:支持多種標記符;LC_STYLED:帶風格的線段。
LC_WIDE:支持畫寬線;LC_WIDESTYLED:支持寬的帶風格的線段。
POLYGONALCAPS設有所支持的多邊形性能。可以是下列值的某種組合。
PC_NONE:不支持繪製多邊形;PC_INTERIORS:支持內部填充;PC_POLYGON:支持繪製間隔式填充多邊形。
PC_RECTANGLE:支持繪製矩形;PC_SCANLINE:支持繪製掃描線;PC_STYLED:支持繪製帶風格的邊界。
PC_WIDE:支持繪製寬邊界;PC_WIDESTYLED:支持繪製寬的帶風格的邊界。
PC_WINDPOLYGON:支持繪製折線式填充多邊形。
TEXTCAPS設備所支持的文字性能,可以是下列值的某種組合:
TC_OP_CHARACTER:支持字元輸出精度;TC_OP_STROKE:支持筆畫輸出精度。
TC_CP_STROKE:支持筆畫剪下精度;TC_CR_90:支持字元作90度旋轉;
TC_CR_ANY:支持字元作任意角度旋轉;TC_SF_X_YINDEP:支持x和y方向的獨立縮放。
TC_SA_DOUBLE:支持把字元放大一倍;TC_SA_INTEGER:支持整數倍縮放。
TC_SA_CONTIN:支持以任何倍數的嚴格縮放;TC_EA_DOUBLE:支持字元加重。
TC_IA_ABLE:支持斜字型;TC_UA_ABLE:支持下劃線;TC_SO_ABLE:支持刪除線。
TC_RA_ABLE:支持光柵字型;TC_VA_ABLE:支持矢量字型;TC_RESERVED:保留、必須為零。
TC_SCROLLBLT:不支持用位快傳遞來滾動,注意這可能事與願違。
C#參數
以上為C++部分參數,下面提供在C#中部分參數的具體值
所有類型均聲明為Int或者INT32即可
DRIVERVERSION = 0
TECHNOLOGY = 2
HORZSIZE = 4
VERTSIZE = 6
HORZRES = 8
VERTRES = 10
BITSPIXEL = 12
PLANES = 14
NUMBRUSHES = 16
NUMPENS = 18
NUMMARKERS = 20
NUMFONTS = 22
NUMCOLORS = 24
PDEVICESIZE = 26
CURVECAPS = 28
LINECAPS = 30
POLYGONALCAPS = 32
TEXTCAPS = 34
CLIPCAPS = 36
RASTERCAPS = 38
ASPECTX = 40
ASPECTY = 42
ASPECTXY = 44
SHADEBLENDCAPS = 45
LOGPIXELSX = 88
LOGPIXELSY = 90
SIZEPALETTE = 104
NUMRESERVED = 106
COLORRES = 108
PHYSICALWIDTH = 110
PHYSICALHEIGHT = 111
PHYSICALOFFSETX = 112
PHYSICALOFFSETY = 113
SCALINGFACTORX = 114
SCALINGFACTORY = 115
VREFRESH = 116
DESKTOPVERTRES = 117
DESKTOPHORZRES = 118
BLTALIGNMENT = 119
返回值:返回值指定所需項目的值。
注釋
GetDeviceCaps提供下列六個索引以代替印表機消失。
PHYSICALWIDTH GETPHYSPAGESIZE; PHYSICALHEIGHT GETPHYSPAGESIZE
PHYSICALOFFSETX GETPRINTINGOFFSET;
PHYSICALOFFSETY GETPHYSICALOFFSET;
SCALINGFACTORX GETSCALINGFACTOR;
SCALINGFACTORY GETSCALINGFACTOR;
Windows CE:Windows CE不支持nIndex參數取下列值:
VREFRESH; DESKTOPHORZRES; DESKTOPVERTRES;BLTALIGNMENT
Windows CE 1.0不支持nIndex參數取下列值:
PHYSICALWIDTH; PHYSICALHEIGHT; PHYSICALOFFSETX; PHYSICALOFFSETY
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;頭檔案:wingdi.h;庫檔案:gdi32.lib。
補充
GetDeviceCaps(HORZSIZE)
HORZSIZE 以毫米為單位的顯示寬度
VERTSIZE 以毫米為單位的顯示高度
HORZRES 以像素為單位的顯示寬度 0~65535
VERTRES 以像素為單位的顯示高度 0~65535
LOGPIXELSX 像素/邏輯英寸(水平)
LOGPIXELSY 像素/邏輯英寸(垂直)