Habe das ganze PNG einem TBitmap übergeben und dann den Ausschnitt in ein zweites TBitmap kopiere.
Jedoch wird auf dem JVImage nichts angezeigt.
Um zu testen ob in dem Bitmap überhaupt das drin ist was ich suche, habe
ich mal eine Paintbox genommen und es dort direkt auf den Canvas zeichnen lassen.
Es ist so wie ich es haben will dort. Jedoch aufs JVImage will es nicht hin.
Dazu kommt bei dem Bitmap geht die Transparenz flöten, welches aber erstmal nicht
ganz so wichtig wäre, hauptsache erstmal angezeigt bekommen.
Wenn ich das PNGObject direkt dem JvImage hinzufüge wirds komplett angezeigt.
Wenn ich versuche den bereich aus dem PNGObject in ein weiteres PNGObject kopiere
und es dann dem JvImage hinzufügen will, kommt natürlich die Fehlermeldung,
das ich nicht drauf zeichnen darf.
Getestet habe ich auch gerade folgendes:
Habe das PNGObject dem Bitmap übergeben, in einem Stream gespeichert und dann
über JvImage.Picture.Bitmap.LoadFromStream(ms);
geladen und
es wird mir bis auf die fehlende Transparents angezeigt.
Kopiere ich den Ausschnitt in ein anderes Bitmap, speicher es in einem Stream
und lade es wiederum in das JvImage mittels
JvImage.Picture.Bitmap.LoadFromStream(ms);
so wird mir dort wieder nichts angezeigt.
Delphi-Quellcode:
MS := TMemoryStream.Create;
TempPng := TPNGObject.Create;
TmpPNG := TPNGObject.Create;
bmp := TBitmap.Create;
bmp2 := TBitmap.Create;
Index := Self.KAZip1.Entries.IndexOf('captionbuttons.png');
Self.KAZip1.ExtractToStream(Self.KAZip1.Entries.Items[Index], MS);
MS.Position := 0;
TempPng.LoadFromStream(MS);
Self.JvImage1.Picture.Graphic := TempPng;
BMP.Assign(TempPNG);
Self.PaintBox1.Canvas.CopyRect(Rect(0,0,10,17), bmp.Canvas, Rect(0,0,10,17));
bmp2.Canvas.CopyRect(Rect(0,0,10,17), bmp.Canvas, Rect(0,0,10,17));
MS.Clear;
MS.Position := 0;
BMP2.SaveToStream(MS);
MS.Position := 0;
JvImage2.Picture.Bitmap.LoadFromStream(MS);
Die hier funktioniert ebenfalls, ich kann den Bereich ausschneiden und er wird mir
in der Painbox angezeigt.
Self.PaintBox1.Canvas.CopyRect(Rect(0,0,10,17), TempPng.Canvas, Rect(0,0,10,17));
ein Normales TImage bringt den gleichen Fehler, ich kann weder auf den Canvas etwas zeichnen, vom
Stream laden oder das Bitmap zuweisen.