728x90
GetDeviceCaps함수는 지정된 Device Context의 여러 정보를 구하는 함수입니다.
Declare Function GetDeviceCaps Lib "gdi32" Alias "GetDeviceCaps" (ByVal hdc As Integer, ByVal nIndex As Integer) As Integer
▶VB.NET 선언
[DllImport("gdi32")]
public static extern int GetDeviceCaps(int hdc, int nIndex);
▶C# 선언
GetDeviceCaps함수는 첫번째 인수에서 정보를 구하고자할 Device Context를 지정하며 두번째 인수에서 어떠한 종류의 정보를 가져올지에 대한 flag를 지정합니다.
이때 지정할 수 있는 flag의 종류는 다음과 같은 것들이 있습니다.
| 상수 | 값 | 설명 |
| DRIVERVERSION | 0 | Device Driver Version |
| TECHNOLOGY | 2 | Device Technology(*1) |
| HORZSIZE | 4 | Device Display 넓이(Milli) |
| VERTSIZE | 6 | Device Display 높이(Milli) |
| HORZRES | 8 | Display 넓이(Pixel) |
| VERTRES | 10 | Display 높이(Pixel) |
| BITSPIXEL | 12 | Pixel당 Color Bit수 |
| PLANES | 14 | Color Plan |
| NUMBRUSHES | 16 | 사용 Brush 수 |
| NUMPENS | 18 | 사용 Pen 수 |
| NUMFONTS | 22 | 사용 Font 수 |
| NUMCOLORS | 24 | 사용 Color 수 |
| PDEVICESIZE | 26 | 예약공간 |
| CLIPCAPS | 36 | 사각형 Clipping 가능 여부(*2) |
| ASPECTX | 40 | Line 그리기시 Pixel의 상대적 넓이 |
| ASPECTY | 42 | Line 그리기시 Pixel의 상대적 높이 |
| ASPECTXY | 44 | Line 그리기시 Pixel의 상대적 대각선 크기 |
| LOGPIXELSX | 88 | Inch당 Pixel 수(넓이) |
| LOGPIXELSY | 90 | Inch당 Pixel 수(높이) |
| SIZEPALETTE | 104 | System Color 수 |
| NUMRESERVED | 106 | System 예약 Color 수 |
| COLORRES | 108 | Device 해상도(Pixel당 Bit) |
| PHYSICALWIDTH | 110 | Print시 Page 넓이 |
| PHYSICALHEIGHT | 111 | Print시 Page 길이 |
| PHYSICALOFFSETX | 112 | Print시 좌측 여백 |
| PHYSICALOFFSETY | 113 | Print시 상단 여백 |
| SCALINGFACTORX | 114 | Print시 X축 Scale |
| SCALINGFACTORY | 115 | Print시 Y축 Scale |
| VREFRESH | 116 | 주파수(초당 Hz) |
| BLTALIGNMENT | 119 | 다중 Pixel에서의 수평 Drawing 배열 |
| SHADEBLENDCAPS | 45 | Device Shading및 Branding(*3) |
TECHNOLOGY 인수 지정시 반환값
| 상수 | 값 | 설명 |
| DT_PLOTTER | 0 | Vector Plotter |
| DT_RASDISPLAY | 1 | Raster Display |
| DT_RASPRINTER | 2 | Raster Printer |
| DT_RASCAMERA | 3 | Raster Camera |
| DT_CHARSTREAM | 4 | Charactor Stream |
| DT_METAFILE | 5 | Meta File |
| DT_DISPFILE | 6 | Display File |
CLIPCAPS 인수 지정시 반환값
| 값 | 설명 |
| 1 | 가능 |
| 0 | 불가 |
SHADEBLENDCAPS 인수 지정시 반환값
| 상수 | 값 | 설명 |
| SB_NONE | 0 | 지원없음 |
| SB_CONST_ALPHA | 1 | Blendfunction 구조체 SourceConstantAlpha 요소 |
| SB_PIXEL_ALPHA | 2 | AlphaBlend에서 Pixel당 Alpha 조정 |
| SB_PREMULT_ALPHA | 4 | AlphaBlend에서 Pixel당 Premultiplied Alpha 요소 |
| SB_GRAD_RECT | 10 | GradientFill 사격형 |
| SB_GRAD_TRI | 20 | - |
위 인수를 토대로 GetDeviceCaps함수를 이용해 Desktop화면의 Display넓이를 구하려면 다음과 같이 호출될 수 있습니다.
Const HORZSIZE As Integer = 8
GetDeviceCaps(GetDC(GetDesktopWindow()), HORZSIZE)
▶VB.NET 호출
const int HORZSIZE = 8;
GetDeviceCaps(GetDC(GetDesktopWindow()), HORZSIZE);
▶C# 호출
728x90
'.NET > Windows API for .NET' 카테고리의 다른 글
| SetFileAttributes - File의 속성설정 (0) | 2019.08.06 |
|---|---|
| GetWindowTextLength - 특정 Window의 제목문자열 크기구하기 (0) | 2019.08.06 |
| Ellipse - Window나 Control에 타원그리기 (0) | 2019.08.06 |
| GetShortPathName - 단축 path명 얻기 (0) | 2019.08.06 |
| GetTempPath - Windws가 사용하는 임시 Folder의 Path를 반환 (0) | 2019.08.06 |