Canvas does not allow drawing...



  • Hallo,

    ich schleppe bei Borland schon seit Jahren ein Problem in meinem Programm mit für das ich noch keine Lösung habe. Da es in der Vergangenheit im Netz auch immer Leute gab, die das selbe Problem hatten, wollte ich es noch einmal zur Diskussion stellen.
    Den Grund dafür habe ich gefunden, aber eben keine wirkliche Lösung.

    Das Problem:
    Bei der VCL tritt der Fehler dann auf, wenn ich auf ein TCanvas Objekt Zeichenoperationen ausführe und davon sehr viele in relativ kurzer Zeit. Z.B. kopiere ich viele kleine Grafiken auf ein TForm Canvas (vielleicht 100 Stück). Das ist auch noch kein Problem, aber es wird eines, wenn ich diesen Vorgang circa 20 mal innerhalb überschaubarer Zeit (vielleicht einigen Sekunden oder Minuten) wiederhole. Der Grund liegt darin, dass Windows dafür einen Zeichnen-Geräte-Context an das Programm vergibt und dann zu viele davon erzeugen muss. Da die Handles nicht wieder schnell genug freigegeben werden, schlägt Windows mit einer Fehlermeldung Alarm.

    Die Lösung:
    habe ich noch nicht gefunden...
    Wenn jemand eine Idee hat, könnte er es hier zur Diskussion stellen.

    Grüße
    Christian



  • Hallo,

    Wie wärs, wenn du die vielen kleinen Grafiken erst mal in ein TMetafileCanvas schreibst und dann das komplett auf den eigentlich Canvas packst. Da in einem MetafileCanvas nur die Zeicheinformationen gespeicher werden müssen da auch nicht immer neue DCs erzeugt werden (glaube ich).


Anmelden zum Antworten