В С# я могу объявить новые 48bitRGB
или 64bitRGBA
без проблем, и на самом деле правильный формат сохраняется на диске.
Однако, когда дело доходит до объявления цвета, я не могу объявить цвет более 8-битных значений. Это связано с тем, что объявления Color
предполагают не более 8 бит на компонент.
Код, который у меня есть до сих пор:
int x;
int y;
int w = 512, h = 512;
Bitmap image = new Bitmap(w, h, System.Drawing.Imaging.PixelFormat.Format48bppRgb); //New image with 16bit per channel, no problem
// Double 'for' control structure to go pixel by pixel on the whole image
for (y = 0; y < h; y++)
{
for (x = 0; x < w; x++)
{
comp = somevalue; //Numeric component value
// Lo que vaya por aqui
System.Drawing.Color newColor = System.Drawing.Color.FromArgb(255, comp, comp, comp); // <= Here is the problem, values can't exceed 256 levels
image.SetPixel(x, y, newColor);
}
}
image.Save(@"C:\test.png", System.Drawing.Imaging.ImageFormat.Png); //Saving image to disk
Что такое метод объявления 16-битного цветового компонента в С#?