In C# Posso dichiarare nuovo 48bitRGB
o senza problemi e in effetti il formato corretto viene salvato su disco.dichiarazione colore colore a 64 bit (16 bit per canale)
Tuttavia, quando si tratta di dichiarare un colore, io non sono in grado di dichiarare il colore dei valori superiore a 8-bit. Ciò sembra essere dovuto al fatto che le dichiarazioni Color
non richiedono più di 8 bit per componente.
Il codice che ho finora:
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
Che è un metodo per la dichiarazione di un componente di colore a 16 bit in C#?
è possibile accedere ai pixel non elaborati, vedere qui come: http://stackoverflow.com/questions/7768711/setpixel-is-too-slow-is-there-a-faster-way-to-draw-to- bitmap – thumbmunkeys
System.Drawing.Color utilizza internamente un lungo (numero intero a 64 bit con segno) per rappresentare il suo valore RGBA ma tutte le sue operazioni accettano valori, è necessario creare la propria classe Bitmap o utilizzare una libreria di formato grafico equivalente. – Machinarius
stai usando wpf? – thumbmunkeys