C# 如何获取颜色位数?
就是 C# 如何获取 桌面——>属性——>设置选项卡——>颜色质量  的值。

解决方案 »

  1.   

    [StructLayout(LayoutKind.Sequential)] 
    public   struct   DEVMODE 

            private   const   int   CCHDEVICENAME   =   0x20; 
            private   const   int   CCHFORMNAME   =   0x20; 
            [MarshalAs(UnmanagedType.ByValTStr,   SizeConst   =   0x20)] 
            public   string   dmDeviceName; 
            public   short   dmSpecVersion; 
            public   short   dmDriverVersion; 
            public   short   dmSize; 
            public   short   dmDriverExtra; 
            public   int   dmFields; 
            public   int   dmPositionX; 
            public   int   dmPositionY; 
            public   ScreenOrientation   dmDisplayOrientation; 
            public   int   dmDisplayFixedOutput; 
            public   short   dmColor; 
            public   short   dmDuplex; 
            public   short   dmYResolution; 
            public   short   dmTTOption; 
            public   short   dmCollate; 
            [MarshalAs(UnmanagedType.ByValTStr,   SizeConst   =   0x20)] 
            public   string   dmFormName; 
            public   short   dmLogPixels; 
            public   int   dmBitsPerPel; 
            public   int   dmPelsWidth; 
            public   int   dmPelsHeight; 
            public   int   dmDisplayFlags; 
            public   int   dmDisplayFrequency; 
            public   int   dmICMMethod; 
            public   int   dmICMIntent; 
            public   int   dmMediaType; 
            public   int   dmDitherType; 
            public   int   dmReserved1; 
            public   int   dmReserved2; 
            public   int   dmPanningWidth; 
            public   int   dmPanningHeight; 

    [DllImport( "user32.dll ")] 
    public   static   extern   bool   EnumDisplaySettings(string   lpszDeviceName,   
            int   iModeNum,   ref   DEVMODE   lpDevMode); private   void   button3_Click(object   sender,   EventArgs   e) 
    {       
            DEVMODE   vDevMode   =   new   DEVMODE(); 
            int   i   =   0; 
            while   (EnumDisplaySettings(null,   i,   ref   vDevMode)) 
            { 
                    Console.WriteLine( "宽:{0}   高:{1}   颜色:{2}   刷新率:{3} ",   
                            vDevMode.dmPelsWidth, 
                            vDevMode.dmPelsHeight, 
                            1   < <   vDevMode.dmBitsPerPel, 
                            vDevMode.dmDisplayFrequency 
                    ); 
                    i++; 
            } 

      

  2.   

    使用WMI最佳,方便
    select * from Win32_DisplayControllerConfiguration
    或者
    select * from Win32_DisplayConfiguration
    这两个表中的 BitsPerPixel就是颜色质量 的值