Hallo,
ich habe folgendes Problem:
meine Anwendung verwendet GDI+ um PNG's zu laden, gezeichnet wird auf einer TImage-Komponente.
Wenn ich meine Draw-Routine(n) ausführe, präsentiert sich die Anwendung genau so, wie sie soll, schließe ich aber die Mainform, stürzt das Programm mit einer "Invalid pointer operation" ab. Ohne GDI+ läuft alles einwandfrei.
Die Draw-Routine(n) laufen alle nach dem gleichen Schema ab, hier dazu ein Beispiel
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TSDStar.Draw (canvas: TCanvas); var g: GGraphics; img: Image; i: integer; begin for i:= 0 to 5000 do fSize := Random (15); fDistance := Random (5000); g := GGraphics.create(Canvas.Handle); try if (fSize >= 0) and (fSize < 5) then img := Image.Create('GFX\StarSmall.png') else if (fSize >= 5) and (fSize < 10) then img := Image.Create('GFX\StarLarge.png') else if (fSize >= 10) and (fSize < 15) then img := Image.Create('GFX\StarVeryLarge.png');
g.DrawImage(img, MakePoint(fX, fY)); fRange := Rect (fx, fy, fX + img.GetWidth, fy + img.GetHeight); finally img.Free; g.Free; end; end; |
Außerdem führe ich bei den Events onShow und onDestroy ein BeginGDIPlus bzw. EndGDIPlus aus.
Leider habe ich bezüglich meines Problems hier im Forum nichts passendes gefunden, das GDI+-Tutorial hilft mir in diesem Fall auch nicht weiter.
Kann mir jemand erklären, was ich falsch mache?
Gruß
SchwarzerVampir
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt