Кажется, Gdiplus не поддерживает 64-битные операции. Каким-то простым способом по-прежнему иметь возможность использовать методы Gdiplus было бы разделить изображение на два 32-битных изображения и работать с ними по отдельности.
Вы можете либо разделить каналы ARGB на AARR и GGBB, либо использовать два 32-битных изображения с младшими и старшими битами ARGB.
Оба варианта потребуют, чтобы вы либо написали функции-обертки, либо разделили каждый вызов на две части следующим образом:
// 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);
Обратите внимание, что здесь я использовал порядок цветов (A, R, G, B), и я не уверен в этом. Согласно документации MSDN, это должно быть вместо этого изменено на Color(R,G,B,A). Если вам не нужен альфа-канал, вам следует предпочесть вариант highlow, так как вы все равно сможете использовать с ним Color(R,G,B).
Чтобы отобразить или сохранить результаты, вам нужно объединить 2 буфера.
person
schnaader
schedule
07.03.2009