Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Fontveränderung bei Resize (https://www.delphipraxis.net/189011-fontveraenderung-bei-resize.html)

Jörgi 26. Apr 2016 10:14

Fontveränderung bei Resize
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Liebe Gemeinde,

ich habe mich extra angemeldet wegen folgendem Problem, was ich nicht nachvollziehen kann...

Ich benutze Delphi 5

Ich lasse mir an der Y-Achse einen gedrehten Text ausgeben mit folgender Prozedur:

Delphi-Quellcode:
procedure TextOutAngle(const Canvas: TCanvas; X, Y: Integer; const AText: string; AAngle: Integer);
  var
    hcurFont: HFONT;
    LogFont: TLogFont; // Windows native Font-Struktur
  begin
    with Canvas do
    begin
      hCurFont := Font.Handle;
      try
        GetObject(Font.Handle, SizeOf(LogFont), @LogFont);
        LogFont.lfEscapement := 10*AAngle;
        LogFont.lfOrientation := Logfont.lfEscapement;
        canvas.Font.Handle := CreateFontIndirect(LogFont);
        try
          TextOut(X, Y, AText);
        finally
          DeleteObject(Font.Handle);
        end;
      finally
        Font.Handle := hCurFont;
      end;
    end;
  end;
Klappt auch soweit ganz gut...
Ziehe ich meine Grafik jetzt größer, dann verändert sich der Font.
Und nicht nur der vom gedrehten Text, sondern alle.

Hat jemand eine Idee ?

Viele Grüße,

Jörg

HolgerX 26. Apr 2016 14:05

AW: Fontveränderung bei Resize
 
Zeichnest Du die Grafic nach dem Resize neu oder streckst Du nur die einmal gezeichnete Grafic?

Jörgi 27. Apr 2016 10:31

AW: Fontveränderung bei Resize
 
die wird neu gezeichnet

Jörgi 28. Apr 2016 12:51

AW: Fontveränderung bei Resize
 
:?:

Jörgi 11. Mai 2016 10:58

AW: Fontveränderung bei Resize
 
Ich pushe noch ein letztes Mal...

himitsu 11. Mai 2016 11:20

AW: Fontveränderung bei Resize
 
Das mit hCurrFont kann doch so nicht funktionieren?
Beim Setzen von Font.Handle wird das vorhandene Handle bestimmt freigegeben, womit dieses gespeicherte Handle dann ungültig wäre. :gruebel:

Delphi-Referenz durchsuchenTFontRecall?

[edit] Jupp, steht so auch in der OH geschrieben.
Zitat:

Durch das Setzen von Handle wird die aktuelle Windows-Schriftressource freigegeben.
Und das DeleteObject gibt dann auch nochmal das neue Handle doppelt frei.

PS: http://docwiki.embarcadero.com/Libra...s.TFont.Handle -> http://docwiki.embarcadero.com/CodeE...t_%28Delphi%29
Hier werden die Handle auch nicht freigegeben. (wobei das nichts heißen muß :stupid:)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:52 Uhr.

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