Windows 中的 1G 颜色与 C++ MFC
1G colors in Windows with C++ MFC
我在 Windows 10 家庭高级版上使用带有 MFC 的 Visual C++ 2019。视频模式为 3840*2160 40-60 Hz (AMD FreeSync) 30 bit/pixel: 10 bit / color part, 1 073 741 824 colors.
我可以用 COLORREF = unsigned int (32 bits) 给出颜色,解释为
(red | (green << 8) | (blue << 16)),这只有 16 777 216 种颜色。我怎样才能给出 1 073 741 824 种颜色?目前16M色转换为1G色。我需要不转换的方法。
例如:CDC::SetPixel、FillSolidRect、SetTextColor、SetBkColor、Line、CPen/CBrush构造函数、CBitmap等。谢谢。
(我想节省转换的时间,比如我自己的IDE中关键页面Up/Down的速度大约是10赫兹,很慢。我生成的图片在主内存(使用 CreateCompatibleBitmap、CreateCompatibleDC、BitBlt)。当我直接在显示器上绘制时,速度更慢。我尝试了 SetBkMode OPAQUE 和 TRANSPARENT,TextOut 和 DrawText 等。)
GDI 不支持 10 位颜色。您需要使用 DirectX。
我在 Windows 10 家庭高级版上使用带有 MFC 的 Visual C++ 2019。视频模式为 3840*2160 40-60 Hz (AMD FreeSync) 30 bit/pixel: 10 bit / color part, 1 073 741 824 colors.
我可以用 COLORREF = unsigned int (32 bits) 给出颜色,解释为 (red | (green << 8) | (blue << 16)),这只有 16 777 216 种颜色。我怎样才能给出 1 073 741 824 种颜色?目前16M色转换为1G色。我需要不转换的方法。
例如:CDC::SetPixel、FillSolidRect、SetTextColor、SetBkColor、Line、CPen/CBrush构造函数、CBitmap等。谢谢。
(我想节省转换的时间,比如我自己的IDE中关键页面Up/Down的速度大约是10赫兹,很慢。我生成的图片在主内存(使用 CreateCompatibleBitmap、CreateCompatibleDC、BitBlt)。当我直接在显示器上绘制时,速度更慢。我尝试了 SetBkMode OPAQUE 和 TRANSPARENT,TextOut 和 DrawText 等。)
GDI 不支持 10 位颜色。您需要使用 DirectX。