@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: The GetDeviceCaps API !!!!C# Signature: [DllImport("gdi32.dll")] static extern int GetDeviceCaps(IntPtr hdc, int nIndex); !!!!VB.NET Signature: <DllImport("gdi32.dll")> _ Public Shared Function GetDeviceCaps(ByVal hDC As IntPtr, ByVal nIndex As Integer) As Integer End Function !!!!User-Defined Types: You can use the following enumeration for passing in as nIndex: '''C#''' public enum DeviceCap { /// <summary> /// Device driver version /// </summary> DRIVERVERSION = 0, /// <summary> /// Device classification /// </summary> TECHNOLOGY = 2, /// <summary> /// Horizontal size in millimeters /// </summary> HORZSIZE = 4, /// <summary> /// Vertical size in millimeters /// </summary> VERTSIZE = 6, /// <summary> /// Horizontal width in pixels /// </summary> HORZRES = 8, /// <summary> /// Vertical height in pixels /// </summary> VERTRES = 10, /// <summary> /// Number of bits per pixel /// </summary> BITSPIXEL = 12, /// <summary> /// Number of planes /// </summary> PLANES = 14, /// <summary> /// Number of brushes the device has /// </summary> NUMBRUSHES = 16, /// <summary> /// Number of pens the device has /// </summary> NUMPENS = 18, /// <summary> /// Number of markers the device has /// </summary> NUMMARKERS = 20, /// <summary> /// Number of fonts the device has /// </summary> NUMFONTS = 22, /// <summary> /// Number of colors the device supports /// </summary> NUMCOLORS = 24, /// <summary> /// Size required for device descriptor /// </summary> PDEVICESIZE = 26, /// <summary> /// Curve capabilities /// </summary> CURVECAPS = 28, /// <summary> /// Line capabilities /// </summary> LINECAPS = 30, /// <summary> /// Polygonal capabilities /// </summary> POLYGONALCAPS = 32, /// <summary> /// Text capabilities /// </summary> TEXTCAPS = 34, /// <summary> /// Clipping capabilities /// </summary> CLIPCAPS = 36, /// <summary> /// Bitblt capabilities /// </summary> RASTERCAPS = 38, /// <summary> /// Length of the X leg /// </summary> ASPECTX = 40, /// <summary> /// Length of the Y leg /// </summary> ASPECTY = 42, /// <summary> /// Length of the hypotenuse /// </summary> ASPECTXY = 44, /// <summary> /// Shading and Blending caps /// </summary> SHADEBLENDCAPS = 45, /// <summary> /// Logical pixels inch in X /// </summary> LOGPIXELSX = 88, /// <summary> /// Logical pixels inch in Y /// </summary> LOGPIXELSY = 90, /// <summary> /// Number of entries in physical palette /// </summary> SIZEPALETTE = 104, /// <summary> /// Number of reserved entries in palette /// </summary> NUMRESERVED = 106, /// <summary> /// Actual color resolution /// </summary> COLORRES = 108, // Printing related DeviceCaps. These replace the appropriate Escapes /// <summary> /// Physical Width in device units /// </summary> PHYSICALWIDTH = 110, /// <summary> /// Physical Height in device units /// </summary> PHYSICALHEIGHT = 111, /// <summary> /// Physical Printable Area x margin /// </summary> PHYSICALOFFSETX = 112, /// <summary> /// Physical Printable Area y margin /// </summary> PHYSICALOFFSETY = 113, /// <summary> /// Scaling factor x /// </summary> SCALINGFACTORX = 114, /// <summary> /// Scaling factor y /// </summary> SCALINGFACTORY = 115, /// <summary> /// Current vertical refresh rate of the display device (for displays only) in Hz /// </summary> VREFRESH = 116, /// <summary> /// Vertical height of entire desktop in pixels /// </summary> DESKTOPVERTRES = 117, /// <summary> /// Horizontal width of entire desktop in pixels /// </summary> DESKTOPHORZRES = 118, /// <summary> /// Preferred blt alignment /// </summary> BLTALIGNMENT = 119 } '''VB''' Public Enum DeviceCap As Integer ''' <summary> ''' Device driver version ''' </summary> DRIVERVERSION = 0 ''' <summary> ''' Device classification ''' </summary> TECHNOLOGY = 2 ''' <summary> ''' Horizontal size in millimeters ''' </summary> HORZSIZE = 4 ''' <summary> ''' Vertical size in millimeters ''' </summary> VERTSIZE = 6 ''' <summary> ''' Horizontal width in pixels ''' </summary> HORZRES = 8 ''' <summary> ''' Vertical height in pixels ''' </summary> VERTRES = 10 ''' <summary> ''' Number of bits per pixel ''' </summary> BITSPIXEL = 12 ''' <summary> ''' Number of planes ''' </summary> PLANES = 14 ''' <summary> ''' Number of brushes the device has ''' </summary> NUMBRUSHES = 16 ''' <summary> ''' Number of pens the device has ''' </summary> NUMPENS = 18 ''' <summary> ''' Number of markers the device has ''' </summary> NUMMARKERS = 20 ''' <summary> ''' Number of fonts the device has ''' </summary> NUMFONTS = 22 ''' <summary> ''' Number of colors the device supports ''' </summary> NUMCOLORS = 24 ''' <summary> ''' Size required for device descriptor ''' </summary> PDEVICESIZE = 26 ''' <summary> ''' Curve capabilities ''' </summary> CURVECAPS = 28 ''' <summary> ''' Line capabilities ''' </summary> LINECAPS = 30 ''' <summary> ''' Polygonal capabilities ''' </summary> POLYGONALCAPS = 32 ''' <summary> ''' Text capabilities ''' </summary> TEXTCAPS = 34 ''' <summary> ''' Clipping capabilities ''' </summary> CLIPCAPS = 36 ''' <summary> ''' Bitblt capabilities ''' </summary> RASTERCAPS = 38 ''' <summary> ''' Length of the X leg ''' </summary> ASPECTX = 40 ''' <summary> ''' Length of the Y leg ''' </summary> ASPECTY = 42 ''' <summary> ''' Length of the hypotenuse ''' </summary> ASPECTXY = 44 ''' <summary> ''' Shading and Blending caps ''' </summary> SHADEBLENDCAPS = 45 ''' <summary> ''' Logical pixels inch in X ''' </summary> LOGPIXELSX = 88 ''' <summary> ''' Logical pixels inch in Y ''' </summary> LOGPIXELSY = 90 ''' <summary> ''' Number of entries in physical palette ''' </summary> SIZEPALETTE = 104 ''' <summary> ''' Number of reserved entries in palette ''' </summary> NUMRESERVED = 106 ''' <summary> ''' Actual color resolution ''' </summary> COLORRES = 108 ' Printing related DeviceCaps. These replace the appropriate Escapes ''' <summary> ''' Physical Width in device units ''' </summary> PHYSICALWIDTH = 110 ''' <summary> ''' Physical Height in device units ''' </summary> PHYSICALHEIGHT = 111 ''' <summary> ''' Physical Printable Area x margin ''' </summary> PHYSICALOFFSETX = 112 ''' <summary> ''' Physical Printable Area y margin ''' </summary> PHYSICALOFFSETY = 113 ''' <summary> ''' Scaling factor x ''' </summary> SCALINGFACTORX = 114 ''' <summary> ''' Scaling factor y ''' </summary> SCALINGFACTORY = 115 ''' <summary> ''' Current vertical refresh rate of the display device (for displays only) in Hz ''' </summary> VREFRESH = 116 ''' <summary> ''' Vertical height of entire desktop in pixels ''' </summary> DESKTOPVERTRES = 117 ''' <summary> ''' Horizontal width of entire desktop in pixels ''' </summary> DESKTOPHORZRES = 118 ''' <summary> ''' Preferred blt alignment ''' </summary> BLTALIGNMENT = 119 End Enum !!!!Notes: None. !!!!Tips & Tricks: Please add some! !!!!Sample Code: '''C#''' static void Main(string[] args) { using (System.Drawing.Graphics g = System.Drawing.Graphics.FromHwnd(IntPtr.Zero)) { Console.WriteLine("Graphics.DpiX: " + g.DpiX); Console.WriteLine("Graphics.DpiY: " + g.DpiY); Console.WriteLine(); IntPtr hdc = g.GetHdc(); foreach (DeviceCap cap in Enum.GetValues(typeof(DeviceCap))) { int result = GetDeviceCaps(hdc, cap); Console.WriteLine(string.Format("{0}: {1}", cap, result)); } g.ReleaseHdc(); } Console.WriteLine(); Console.Write("Press any key to exit..."); Console.ReadKey(); } '''VB''' Private Shared Sub Main(args As String()) Using g As System.Drawing.Graphics = System.Drawing.Graphics.FromHwnd(IntPtr.Zero) Console.WriteLine("Graphics.DpiX: " & g.DpiX) Console.WriteLine("Graphics.DpiY: " & g.DpiY) Console.WriteLine() Dim hdc As IntPtr = g.GetHdc() For Each cap As DeviceCap In [Enum].GetValues(GetType(DeviceCap)) Dim result As Integer = GetDeviceCaps(hdc, cap) Console.WriteLine(String.Format("{0}: {1}", cap, result)) Next g.ReleaseHdc() End Using Console.WriteLine() Console.Write("Press any key to exit...") Console.ReadKey() End Sub !!!!Alternative Managed API: System.Windows.Forms.Screen.PrimaryScreen might be of help in some cases. (Matt M Jacobsen) If you are using Graphics as a DeviceContext you can use the DpiX and DpiY attributes. (Julian Taupe) Documentation: GetDeviceCaps@msdn on MSDN http://msdn2.microsoft.com/en-us/library/ms533266.aspx
Edit gdi32.GetDeviceCaps
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.