AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RichEdit Text mit schatten

Ein Thema von thomas2009 · begonnen am 30. Mär 2011 · letzter Beitrag vom 30. Mär 2011
Antwort Antwort
thomas2009
(Gast)

n/a Beiträge
 
#1

RichEdit Text mit schatten

  Alt 30. Mär 2011, 21:18
Hi

mit diesem Code kann ich den Text in RichEdit mit einem Schatten-Effekt zeichnen
Das Problem, alle Linien von RichEdit kommen in eine Linie

Gibt es eine Andere Funktion für Richedit? Der Code ist normalerweise für eine String gedacht und nicht für TString
Delphi-Quellcode:
var
   lf: LOGFONT; // Windows native font structure
  // text: string;
begin
   Canvas.Brush.Style := bsClear; // set the brush style to transparent
   FillChar(lf, SizeOf(lf), Byte(0)) ;
   lf.lfHeight := 100;
   lf.lfFaceName := 'Arial';
   Canvas.Font.Handle := CreateFontIndirect(lf) ;
   Canvas.Font.Color := clBlack;
   //text := txtText.Text;
   Canvas.TextOut(20, 100, RichEdit1.Lines.Text) ; // shadow in black
   //Canvas.Font.Color := clGray;
   Canvas.Font.Color := clBlue;
//Canvas.TextOut(19, 99, Edit1.Text) ; // // text in gray 1pxl left and up
   Canvas.TextOut(19, 99, RichEdit1.Lines.Text) ;
end;
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#2

AW: RichEdit Text mit schatten

  Alt 30. Mär 2011, 21:26
Oder Du gehst alle Lines durch und gibts diese einzeln aus zB so:

Delphi-Quellcode:
for i:=0 to RichEdit.Lines.Count -1 do
  begin
    Canvas.TextOut(x,y,RichEdit.Lines[i]);
    inc(y,20);
  end;
Lars
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

AW: RichEdit Text mit schatten

  Alt 30. Mär 2011, 21:41
Verstehst du eigentlich, was der Code macht? Es ist doch sinnlos alles nur via Copy&Paste zusammenzutragen und andere um die Änderung des Codes zu fragen... Auf die Dauer verstehe ich da die anderen.

@daywalker9: so könnte man es machen, wobei das nicht das Rätsels Lösung ist, da die Position der Scrollbalken eine sehr elementare Rolle spielt
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#4

AW: RichEdit Text mit schatten

  Alt 30. Mär 2011, 21:50
Was für ein Grund hat die Erstellung eines Fonts via WinAPI in diesem VCL-Code?
(dazumal es hier keinerlei Grund dafür gibt)

Delphi-Referenz durchsuchenTCanvas.TextOut kann nunmal nur Sinle-Line-Texte ausgeben, da es intern MSDN-Library durchsuchenExTextOut nutzt, welches dieses nicht bietet.

Delphi-Referenz durchsuchenTCanvas.TextRect nutzt MSDN-Library durchsuchenDrawText/MSDN-Library durchsuchenDrawTextEx und das kann es, wenn es entsprechend eingestellt ist.

Mit entsprechender Recherche in der OH und im MSDN hätte man sowas bestimmt auch selber rausbekmmen können.


Und nochwas zum Codes da oben:
- entweder man nutzt nur WinAPI
- oder man nutzt die VCL

Aber auf keinem Fall sollte man sowas mischen ... jedenfalls nicht, wenn es keinerlei Gründe dafür gibt, also wenn man das gleiche Verhalten sehr leicht mit jeweils nur einer Variante erreichen kann.



Und ich kann s.h.a.r.k nur zustimmen. Will man wirklich programmieren, dann muß man wenigstens Ansatzweise wissen was man da macht, sonst bringt es einfach nix.

Ab jetzt: 10¢ pro Antwort
Ich glaub ich bin bald Millionär.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (30. Mär 2011 um 21:54 Uhr)
  Mit Zitat antworten Zitat
thomas2009
(Gast)

n/a Beiträge
 
#5

AW: RichEdit Text mit schatten

  Alt 30. Mär 2011, 23:22

Delphi-Quellcode:
    Canvas.TextOut(x,y,RichEdit.Lines[i]);
    inc(y,20);
  end;
Es erscheint zu funktionieren
Delphi-Quellcode:
procedure TfrmMain.Button2Click(Sender: TObject);
var
   lf: LOGFONT;
  i, x, y: Integer;
begin
x:=0;
y:=1;
    Canvas.Brush.Style := bsClear;
   FillChar(lf, SizeOf(lf), Byte(0)) ;
   lf.lfHeight := 100;
   lf.lfFaceName := 'Arial';
   Canvas.Font.Handle := CreateFontIndirect(lf) ;
   Canvas.Font.Color := clBlack;
   Canvas.Font.Color := clBlue;

    for i:=0 to RichEdit1.Lines.Count -1 do
  begin
    Canvas.TextOut(0,y*80,RichEdit1.Lines[i]);
 inc(y);
  end;
end;
Es gibt ein kleines Problem und zwar wenn der Text in Richedit (Zeile) nicht den die selbe Font.Size
Dann kann es sein dass die Text-Zeile über einander oder weit weg von einander kommen
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#6

AW: RichEdit Text mit schatten

  Alt 30. Mär 2011, 23:42
Liest du überhaupt das, was man dir schreibt? Es macht irgendwie so gar nicht den Eindruck.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22: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