![]() |
Sehr schlechte Qualität bei gedrehtem Text
Liste der Anhänge anzeigen (Anzahl: 1)
Ich muss gedrehten Text ausgeben:
Delphi-Quellcode:
Es funktioniert, aber das Ergebnis ist unter Windows 2k/XP erschütternd, die anderen Systeme habe ich erst gar nicht probiert. Scheinbar ist Windows von der Angabe der Qualität völlig unbeeindruckt.
procedure TForm1.Button2Click(Sender: TObject);
var Mfont: HFONT; begin Mfont := CreateFont(12, // FontSize 0, // Breite der Zeichen -450, // Winkel * 10 0, // Winkel der Zeichen 0, // Dicke der Zeichen 0, // Kursiv 0, // Unterstrichen 0, // StrikOut DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH, 'Arial'); // Erzeugte Schrift dem Canvas zuweisen SelectObject(Canvas.Handle, Mfont); Canvas.TextOut(20,1,'Dies ist ein Test'); DeleteObject(Mfont); end; http://www.delphipraxis.net/download.php?id=5389 Hat jemand Ideen? |
Re: Sehr schlechte Qualität bei gedrehtem Text
Delphi-Quellcode:
Mfont := CreateFont(12, // FontSize
0, // Breite der Zeichen -450, // Winkel * 10 0, // Winkel der Zeichen 2, // Dicke der Zeichen 0, // Kursiv 0, // Unterstrichen 0, // StrikOut DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH, 'Arial BLACK'); so ists viel besser :mrgreen: |
Re: Sehr schlechte Qualität bei gedrehtem Text
Jein, beim Winkel 17 * 10 sieht es wieder grauselig aus :pale:
Ist Arial Black auf jedem System? |
Re: Sehr schlechte Qualität bei gedrehtem Text
Liste der Anhänge anzeigen (Anzahl: 1)
|
Re: Sehr schlechte Qualität bei gedrehtem Text
Mit DirectX erstellter text ... nee scherz ... wäre warscheinlich zwar sauberer aber ... muss nicht sein.
Probier einfach mal nen paar schriftarten durch. Ich fand, dass z.B. Times New Roman, Verdana, oder Courier New garnicht soo schlecht aussehen. ciao, Philipp |
Re: Sehr schlechte Qualität bei gedrehtem Text
Folgend sollte es gehen (Voraussetzung mind. 65535 Farben, NT4/2000/XP oder besser)
Delphi-Quellcode:
...:cat:...
var
Mfont: HFONT; [...] SetGraphicsMode(Canvas.Handle, GM_ADVANCED); try Mfont := CreateFont(12, // FontSize 0, // Breite der Zeichen -450, // Winkel * 10 0, // Winkel der Zeichen 0, // Dicke der Zeichen 0, // Kursiv 0, // Unterstrichen 0, // StrikOut DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH, 'Arial'); try // Erzeugte Schrift dem Canvas zuweisen SelectObject(Canvas.Handle, Mfont); Canvas.TextOut(20,1,'Dies ist ein Test'); finally DeleteObject(Mfont); end; finally SetGraphicsMode(Canvas.Handle, GM_COMPATIBLE); end; |
Re: Sehr schlechte Qualität bei gedrehtem Text
notfalls könnte ein bitmap helfen, falls du einen unveränderten text hast
|
Re: Sehr schlechte Qualität bei gedrehtem Text
Moin!
1. CreateFontIndirect() verwenden 2. in der LOGFONT Struktur lfEscapement und lfOrientation auf den gleichen Wert setzen 3. Folgendes verwende ich z.B.
Delphi-Quellcode:
MfG
Var
fMeinFont : LOGFONT; fOldHandle : HFONT; Begin fMeinFont.lfHeight := 14; fMeinFont.lfWidth := 0; fMeinFont.lfEscapement := 450; fMeinFont.lfOrientation := 450; fMeinFont.lfWeight := 0; fMeinFont.lfItalic := 0; fMeinFont.lfUnderline := 0; fMeinFont.lfStrikeOut := 0; fMeinFont.lfCharSet := ANSI_CHARSET; fMeinFont.lfOutPrecision := OUT_DEFAULT_PRECIS; fMeinFont.lfClipPrecision := CLIP_DEFAULT_PRECIS; fMeinFont.lfQuality := PROOF_QUALITY; fMeinFont.lfPitchAndFamily := VARIABLE_PITCH Or FF_SWISS; fMeinFont.lfFaceName := 'Arial'; fOldHandle := Canvas.Font.Handle; Canvas.Font.Handle := CreateFontIndirect(fMeinFont); TextOut() DeleteObject(Canvas.Font.Handle); Canvas.Font.Handle := fOldHandle; End; Muetze1 |
Re: Sehr schlechte Qualität bei gedrehtem Text
Also, ich habe jetzt vermutlich alle Varianten, die es gibt durchprobiert :coder:
Letztendlich habe ich keine Auswirkung der property fdwQuality und Ihrer Werte ANTIALIASED_QUALITY, CLEARTYPE_QUALITY, DEFAULT_QUALITY, DRAFT_QUALITY, NONANTIALIASED_QUALITY, PROOF_QUALITY feststellen können. Scheinbar muss ich damit leben. ![]() Danke trotzdem an alle! |
Re: Sehr schlechte Qualität bei gedrehtem Text
Hi,
Habe festegestellt, dass wenn die Grösse der Schrift unter 14 ist, eine Unschärfe entsteht. Ab 14 und mehr sieht's dann wieder gut aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var lf : TLogFont; tf : TFont; begin with Form1.Canvas do begin Font.Name := 'Arial'; Font.Size := 14; tf := TFont.Create; tf.Assign(Font); GetObject(tf.Handle, SizeOf(lf), @lf); lf.lfEscapement := -450; lf.lfOrientation := lf.lfEscapement; lf.lfQuality := ANTIALIASED_QUALITY; tf.Handle := CreateFontIndirect(lf); Font.Assign(tf); tf.Free; TextOut(100, Height div 2, 'Rotated Text!'); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 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-2025 by Thomas Breitkreuz