Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi wie temoräres Canvas erstellen und nutzen? (https://www.delphipraxis.net/128716-wie-temoraeres-canvas-erstellen-und-nutzen.html)

Assertor 4. Feb 2009 18:24

Re: wie temoräres Canvas erstrllen und nutzen?
 
Hi,

@himitsu: Sollte gehen, aber ich würde aus einem Bauchgefühl heraus das gecastete Canvas bevorzugen.

Zitat:

Zitat von taaktaak
Oh, oh, das ist wieder einmal so ein Moment, wo sich die Spreu vom Weizen trennt :(

Du meinst aber nicht meine Antwort, oder :gruebel:

Da ich zur Bescheidenheit erzogen wurde, werd ich sonst selbst gleich :oops:

Zitat:

Zitat von DeddyH
Macht nichts, Ralph, nobody' s perfect (ich schon lange nicht) :zwinker:

Gleiches gilt für mich. Hautpsache wir können es nachschlagen, oder uns hier helfen lassen :)

:dp:

Zitat:

Zitat von taaktaak
Danke, Detlef, das hast du lieb gesagt!
Arbeiten wir also weiter an unserer Fortbildung!
:cheers:

Ihr zwei Beide seit ja wohl die, die mir hier am häufigsten geholfen haben. Also von mir auch ein Feierabend-:cheers:

Gruß Assertor

taaktaak 4. Feb 2009 18:36

Re: wie temoräres Canvas erstrllen und nutzen?
 
Zitat:

Zitat von Assertor
Du meinst aber nicht meine Antwort, oder :gruebel:

Doch, doch, von solchen Lösungen bin ich als Hobby-Autodidakt noch sehr weit entfernt.
Vielleicht haben wir zusammen auf der "Cap San Diego" ja mal Gelegenheit für ein "echtes" :cheers:

himitsu 4. Feb 2009 19:02

Re: wie temoräres Canvas erstrllen und nutzen?
 
hab's doch über das Canvas gelöst ... hatte fast vergessen, daß ich an einer Stelle das Canvas weitergeb :oops:

es gibt zumindestens keine Exception mehr :thumb:

ob die Berechnung dann stimmt werd ich ja bald erfahren ... muß aber erst noch die Anzeigeprozedur wieder instandsetzen.

Delphi-Quellcode:
Canvas := TCanvas.Create;
Try
  Canvas.Handle := GetDC(GetDesktopWindow);
  ResizeTextComp(Comp, Canvas, 1, 1.0);
  //ReleaseDC(Canvas.Handle);
Finally
  Canvas.Free;
End;
Danker erstmal.
da fallen einem fast die Schuppen aus den Haaren, wenn man sieht, wie einfach es sein kann und man einfach nicht sieht :angel:


Das Desktop-Handle muß ich dann nicht extra noch freigeben ... dürfte doch hoffentlich vom Canvas erledigt werden? :gruebel:

Assertor 4. Feb 2009 19:07

Re: wie temoräres Canvas erstrllen und nutzen?
 
Hi,

Zitat:

Zitat von taaktaak
Zitat:

Zitat von Assertor
Du meinst aber nicht meine Antwort, oder :gruebel:

Doch, doch, von solchen Lösungen bin ich als Hobby-Autodidakt noch sehr weit entfernt.

Vielleicht haben wir zusammen auf der "Cap San Diego" ja mal Gelegenheit für ein "echtes" :cheers:

Auf jeden Fall, sehr gerne! Ich weiß nur nicht, wie wir uns alle dann erkennen - ist für mich ja das erste mal Delphi-Tage. Wir können ja Namensschilder mit den Pseudonymen machen ;)

Gruß Assertor

Apollonius 4. Feb 2009 19:18

Re: wie temoräres Canvas erstrllen und nutzen?
 
Du musst das Desktop-Handle selbst freigeben! Das Canvas kann das gar nicht automatisch tun, da es weder über die Besitzverhältnisse des HDC informiert ist noch über das Fensterhandle, welches zur Freigabe benötigt wird.

himitsu 4. Feb 2009 19:58

Re: wie temoräres Canvas erstrllen und nutzen?
 
Hab auch grad gemerkt, TCanvas besitzt nichtmal Destroy/Free-Methoden, um da überhaupt was beim Löschen freigeben zu können. :shock:

Das Ergebnis sieht nun so aus
Code:
Canvas := TCanvas.Create;
[b]Try[/b]
  Canvas.Handle := GetDC(GetDesktopWindow);
  [color=gray]ResizeTextComp(Comp, Canvas, 1, 1.0);[/color]
  ReleaseDC(GetDesktopWindow, Canvas.Handle);
[b]Finally[/b]
  Canvas.Free;
[b]End[/b];
Und laut Taskmanager bleiben die GDI-Objecte auch konstant (ohne ReleaseDC stiegen die wirklich an)


also Danke nochmal an alle :love:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:37 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz