Gdiplus 似乎不支持任何 64 位操作。一种仍然能够使用 Gdiplus 方法的简单方法是将图像拆分为两个 32 位图像并分别对它们进行操作。
您可以将 ARGB 通道拆分为 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 文档,这必须改为 Color(R,G,B,A) 。如果您不需要 alpha 通道,您应该更喜欢 highlow 变体,因为您仍然可以使用 Color(R,G,B) 。
要显示或保存结果,您需要合并 2 个缓冲区。