Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Gekippten Text doppel zeichnen !!! (https://www.delphipraxis.net/110583-gekippten-text-doppel-zeichnen.html)

HolgerCW 20. Mär 2008 13:02


Gekippten Text doppel zeichnen !!!
 
Hallo zusammen,

folgende Procedure, dreht den Text:
Delphi-Quellcode:
procedure TextOutAngle(const Canvas: TCanvas; X, Y: Integer; const AText: String; AAngle: Integer);
var
 hCurFont: HFONT;
 LogFont: TLogFont;
begin

 with Canvas do
 begin
 
 hCurFont := Font.Handle;
  try
 
   GetObject(Font.Handle, SizeOf(LogFont), @LogFont);
   LogFont.lfEscapement := AAngle;
   LogFont.lfOrientation := AAngle;

   Font.Handle := CreateFontIndirect(LogFont);
   try
    TextOut(X, Y, AText);
   finally
    DeleteObject(Font.Handle);
   end;
  finally
   Font.Handle := hCurFont;
  end;
 end;

end;
Nun möchte ich aber den Text so zeichnen als ob er ausgeblendet aussieht. Heisst einmal Hellgrau und um einen Pixel verschoben in weiss. Bei nicht gedrehtem Text geht das auch, aber ich denke die Funktion oben entfernt immer den vorherigen Text wenn Sie zeichnet, oder ?
Weiss da jemand Rat ?

Gruss

Holger

Medium 20. Mär 2008 13:15

Re: Gekippten Text doppel zeichnen !!!
 
Probier es doch einfach aus. Ich denke, sie entfernt da nichts.

HolgerCW 20. Mär 2008 13:24

Re: Gekippten Text doppel zeichnen !!!
 
Das habe ich ja ausprobiert:

So:

Delphi-Quellcode:
Canvas.Brush.Style := bssolid;
Canvas.Font.Color := clBtnHighlight;
Canvas.Font.Name := 'Arial';
Canvas.Font.Size := 8;
Canvas.TextOut(rect.left+17,rect.top+7,Pages[Der_Tabindex].Caption); // <- Ohne das klappt es nicht
TextOutAngle(PageControl.Canvas, rect.left+17, rect.top+7, Pages[Der_Tabindex].Caption, 900);
   
//text in anderer Farbe wieder drüberzeichnen (25 Pixel nach links oben versetzt)
Canvas.Brush.Style := bsclear;
Canvas.Font.Color := clBtnShadow;
Canvas.Font.Name := 'Arial';
Canvas.Font.Size := 8;
Canvas.TextOut(rect.left+16,rect.top+6,Pages[Der_Tabindex].Caption);
TextOutAngle(PageControl.Canvas, rect.left+16, rect.top+6, Pages[Der_Tabindex].Caption, 900);

taaktaak 20. Mär 2008 13:58

Re: Gekippten Text doppel zeichnen !!!
 
Moin, Moin,
um eine Beschriftungen im "disabled"-Stil auszugeben verwendet man eine spezielle Funktion: DrawState() - ob die allerdinsg auch gedrehten Text ausgeben kann, ist mit nicht bekannt.

HolgerCW 20. Mär 2008 14:02

Re: Gekippten Text doppel zeichnen !!!
 
Hast Du vielleicht ein Beispiel wie die Funktion im nicht gedrehten Stil angewendet wird ?

taaktaak 20. Mär 2008 14:04

Re: Gekippten Text doppel zeichnen !!!
 
Leider nicht parat (bin im Büro), aber bei MSDN findest du gute Infos dazu

HolgerCW 20. Mär 2008 14:23

Re: Gekippten Text doppel zeichnen !!!
 
Das klappt schon ganz gut. Klappt DrwaState auch mit OwnerDraw = FALSE ?


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

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