Wie kann ich laden Sie ein generiertes Bitmap in einer PictureBox?

Scheint es viele picturebox Fragen gibt, aber ich habe keine gefunden, die sich mit der änderung der Inhalt einer picturebox in ein bitmap-das war nicht einfach aus der Datei geladen.

Meine Anwendung ein array von bytes und erzeugt eine bitmap von Ihnen. Ich möchte wirklich vermeiden, in eine Datei schreiben als ein intermediate-Verarbeitung Schritt.

Weil es ein array von bytes ist, und nicht 2-byte-Worte, die ich brauchte, um eine indizierte bitmap mit einer Graustufen-palette.

Ich dann in der bitmap indiziert, um eine normale (24 bit rgb).

Dies ist der code, der zu einem Fehler führt für mich:

pictureBox1.Image = (System.Drawing.Image)bmp2;

Wenn ich die form (die picturebox versucht zu zeichnen), wird der thread halt einfach die Ausführung mit einer Meldung:
"Ungültiger parameter im System.Zeichnung.Bild.get_RawFormat()"

Was mache ich falsch? Wie erstelle ich ein Sicheres bitmap für die picturebox?

Dies ist, was schafft "bmp2":

//creating the bitmap from the array
System.Drawing.Bitmap bmp1 = new System.Drawing.Bitmap(100, 100, 100, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, MyIntPtr);

//creating a proper indexed palette
System.Drawing.Imaging.ColorPalette GrayPalette = bmp1.Palette;
for (int i = 0; i < GrayPalette.Entries.Length; i++)
{
    GrayPalette.Entries[i] = Color.FromArgb(i, i, i);
}
bmp1.Palette = GrayPalette;

//creating a non-indexed, 24bppRGB bitmap for picturebox compatibility
System.Drawing.Bitmap bmp2 = new Bitmap(bmp1.Width, bmp1.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
Graphics gr = Graphics.FromImage(bmp2);
gr.DrawImage(bmp1, 0, 0);
gr.Dispose();

Wenn ich bmp1.Save(@"testfile.bmp") bekomme ich eine vollkommen akzeptable bitmap, die angezeigt werden, ohne Anomalie.

Warum kann ich meine bitmap als meine picturebox.Bild?
Gibt es zusätzliche Parameter, die von der picturebox, die ich ändern muß vor dem laden der neuen bitmap in es?

Schreibe einen Kommentar