Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Sehr schlechte Qualität bei gedrehtem Text (https://www.delphipraxis.net/22417-sehr-schlechte-qualitaet-bei-gedrehtem-text.html)

Mario 17. Mai 2004 15:38


Sehr schlechte Qualität bei gedrehtem Text
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich muss gedrehten Text ausgeben:
Delphi-Quellcode:
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;
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.

http://www.delphipraxis.net/download.php?id=5389

Hat jemand Ideen?

Nicodius 17. Mai 2004 15:41

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:

Mario 17. Mai 2004 15:50

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?

Mario 17. Mai 2004 15:56

Re: Sehr schlechte Qualität bei gedrehtem Text
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier noch der Beweis :wall:

http://www.delphipraxis.net/download.php?id=5390

c113plpbr 17. Mai 2004 16:14

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

sakura 17. Mai 2004 16:20

Re: Sehr schlechte Qualität bei gedrehtem Text
 
Folgend sollte es gehen (Voraussetzung mind. 65535 Farben, NT4/2000/XP oder besser)

Delphi-Quellcode:
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;
...:cat:...

nailor 17. Mai 2004 16:21

Re: Sehr schlechte Qualität bei gedrehtem Text
 
notfalls könnte ein bitmap helfen, falls du einen unveränderten text hast

Muetze1 17. Mai 2004 22:23

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:
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;
MfG
Muetze1

Mario 18. Mai 2004 06:29

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.

http://msdn.microsoft.com/library/en...ntext_8fp0.asp

Danke trotzdem an alle!

toms 18. Mai 2004 07:28

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.
Seite 1 von 2  1 2      

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