gpt4 book ai didi

visual-c++ - Gdiplus 64 位颜色

转载 作者:行者123 更新时间:2023-12-02 00:45:47 27 4
gpt4 key购买 nike

我正在创建一个 64 位位图并使用 Graphics 对象将其包装起来以在其上绘制。问题是 Gdiplus 颜色类只有 32 位(每个组件只有字节,即最大 255)所以我如何使用 gdiplus 绘制 64 位图像?例如

Bitmap bmp(100, 100, PixelFormat64bppARGB);

Graphics g(&bmp);
//how do I draw a red line now, if i use Color(255,0,0) it comes as almost dark black red

最佳答案

Gdiplus 似乎不支持任何 64 位操作。一种仍然能够使用 Gdiplus 方法的简单方法是将图像拆分为两个 32 位图像并分别对其进行操作。

您可以将 ARGB channel 拆分为 AARR 和 GGBB,或者使用两个具有较低和较高 ARGB 位的 32 位图像。

这两种变体都需要您编写包装函数或将每个调用分成两部分,如下所示:

// This is what you want to do (ARGB, 16 bit per channel)
// g.DrawLine(new Pen(Color(0, 65535, 1024, 31), 1, 0, 0, 100, 100);

// AARR GGBB variant
gAARR.DrawLine(new Pen(Color(0,0,255,255), 1, 0, 0, 100, 100);
gGGBB.DrawLine(new Pen(Color(4,0,0,31), 1, 0, 0, 100, 100);

// ARGBhigh ARGBlow variant
gHigh.DrawLine(new Pen(Color(0,255,4,0), 1, 0, 0, 100, 100);
gLow.DrawLine(new Pen(Color(0,255,0,31), 1, 0, 0, 100, 100);

请注意,我在这里使用了 Color(A,R,G,B) 顺序,但我不确定。根据MSDN documentation ,这必须改为 Color(R,G,B,A)。如果您不需要 alpha channel ,您应该更喜欢 highlow 变体,因为您仍然可以使用它来使用 Color(R,G,B)。

要显示或保存结果,您需要合并 2 个缓冲区。

关于visual-c++ - Gdiplus 64 位颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/621624/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com