看起来Gdiplus不支持任何64位操作。一个比较简单的方法是将图像分成两个32位图像并分别进行操作,这样仍然可以使用Gdiplus方法。
您可以将ARGB通道拆分为AARR和GGBB,或者使用具有较低和较高ARGB位的两个32位图像。
这两种变体都需要编写包装函数或将每个调用分成两个部分,如下所示:
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);
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)。
要显示或保存结果,您需要合并这两个缓冲区。