Meine Anwendung produziert (nur unter Windows) folgende Fehlermeldung:
Hat jemand eine Idee, woran das liegt und wie man das behebt?
In der IDE wird das nicht abgefangen und auch nicht angezeigt, wo der Fehler liegt. Auf meinem Mac luft es tadellos.
…
Ich konnte die Fehlerstelle eingrenzen auf diese Zeile (in einem PaintEvent eines Canvas):
g.drawpicture Schmuckgrafik, 0, 0, g.width, g.Height, 0, ScrollBar1.Value25, Schmuckgrafik.width, me.Heighti
Schmuckgrafik ist nicht Nil und hat eine Gre von 2422x8980 Pixel (Width x Hight)
i=3,3826815642458099 (Double)
g (Graphics vom Canvas) = 716 x 480 (Width x Hight)
Ich habe mal ein Beispiel erstellt und auch gleich einen Fix gefunden: link text
Ich habe für den Fix ein LocalPicture in Größe des Canvas erzeugt.
Dann wurde das große Picture in das LocalPicture gezeichnet (problemlos). Danach konnte ich das LocalPicture in das Graphics vom Canvas ausgeben.
Kann das mal jemand prüfen?
Dann kann ich es ja als Feedback melden.
Das ist eine gute Idee - zumindest für TargetWindows.
Ein bekanntes Problem bei der Direct2D Implementation von Xojo ist, dass Bilder einen enormen Bedarf an Arbeitsspeicher haben…
Ein anderer gemeldeter Effekt (wohl ähnlich wie dem hier) ist <https://xojo.com/issue/54421>. Dort beschriebene Workarounds könnte hilfreich sein, wenn so grosse Bilder über längere Zeit in der Anwendung gehalten werden…
Leider gibt es bei Xojo (meist) keine schöne “Out Of Memory” Meldung… das Resultat ist dann entweder ein Absturz oder so eine kryptische Meldung wie “Runtime Error (CreateBitmapFromWicBitmap)”.
Hallo Stefan,
ich habe unter MAC deine Paint Routine gendert.
Dein Beispiel hat eine Scrollbar1 mit Maximum 100 * 25 nie das Bildende erreicht / Scrollbar.livescroll auf True
Dim i As Double
If Schmuckgrafik<>Nil Then
if me.Height>=Schmuckgrafik.Height then
g.drawpicture Schmuckgrafik,0,0,g.width,Schmuckgrafik.Height,0,0,Schmuckgrafik.width,Schmuckgrafik.Height
else
i=Schmuckgrafik.Width/Canvas1.Width
ScrollBar1.maximum = Schmuckgrafik.height-canvas1.Heighti // Anzeige bis Ende
g.drawpicture Schmuckgrafik,0,0,g.width,g.Height,0,ScrollBar1.Value,Schmuckgrafik.width,Me.Heighti // * 25 gelscht
End
end
Hallo Rolf,
danke für den Hinweis.
Ich habe im Code des Hauptprojektes nachgesehen. Dort funktioniert es.
Demnach scheint es ein Problem im Beispielprojekt zu sein.