Ich versuche, GDI + zu verwenden, um zwei PNGs mit Transparenz, die ich in einer ImageList gespeichert habe, zusammenzuführen und dann in einer PictureBox anzuzeigen. Meine PictureBox-Größe, die erste Bildgröße und die zweite Bildgröße sind alle gleich. Ich dachte, das wäre einfach, aber der folgende Code funktioniert nicht und ich bin mir nicht sicher warum. Ich habe gesucht, aber ich konnte keine Code-Snippets speziell für PictureBoxes finden.Mischen von 2 transparenten Bildern in eine Picturebox
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PictureBox1.Image = Nothing
Dim myGraphic As Graphics = PictureBox1.CreateGraphics
myGraphic.DrawImageUnscaled(ImageList1.Images(0), 0, 0)
myGraphic.DrawImageUnscaled(ImageList1.Images(1), 0, 0)
End Sub
Weiß jemand, was ich vermisst? In dem Moment, in dem ich auf die Schaltfläche klicke, sehe ich, wie die PictureBox für eine halbe Sekunde mit dem Bild flackert.
Vielen Dank im Voraus.
Danke für die Antwort. Es soll es überschreiben, weil das zweite Bild ein Overlay mit Transparenz ist. Ein Beispiel von dem, was ich versuche zu erreichen, kann hier gefunden werden: http://www.codeproject.com/KB/cs/Merge_Images_in_C_.aspx Ich möchte das tun, aber anstatt in eine Datei zu schreiben, möchte ich es in einem zeigen PictureBox (und mein Programm ist in VB.Net nicht C#). Könnten Sie bitte erklären, was Sie meinen, indem Sie die Picturebox für ungültig erklären? Und ich versuchte das Minimieren/Maximieren, aber nichts passierte. – quantum
Einfach: Rufen Sie einfach die Control.Invalidate() -Methode auf. Siehe hier: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.invalidate(v=vs.71).aspx Es existiert, weil das Zeichnen auf den tatsächlichen Bildschirm ein kostspieliger Prozess ist. Anstatt also jeden Schritt jedes Objekts, das Sie auf eine zeichnerische Oberfläche zeichnen, zu zeigen, zeichnen Sie alles und erzählen der Oberfläche, dass sie sich selbst aktualisiert. Das heißt, ich glaube, du gehst mit deiner Herangehensweise den falschen Weg. Sie sollten alle Zeichnungslogik in das ** Paint-Ereignis ** des Steuerelements einfügen. – Pedery