![]() |
Pitch mit Textoutw und Accents ?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Alle,
ich habe jetzt (fast) verstanden wie ich unter D6/D7 Unicode-Text auf eine Canvas ausgebe, und zwar mit Möglichkeit für gespiegelt, gedreht etc. Das meiste klappt schon. Aber.. Ich möchte gern auch die Möglichkeit haben eine Pitch zu benutzen. Mit SetworldTransform kann ich jeder Zeichen schmaler machen, das geht problemlos. Aber leider unterstützt DrawTextW keine pitch-parameter. Ich habe versucht mit TextOut (position):
Delphi-Quellcode:
Klappt auch ABER geht mit zB Arabisch und Hebräisch shief. Zehe Beispiel unten:
startx := 100;
starty := 10; for i := 1 to length(content) do begin WideCanvasTextOut( // TNTGraphics function TCanvasPanel(Panel1).Canvas, startx, starty, content[i] ); startx := startx + WideCanvasTextWidth( TCanvasPanel(Panel1).Canvas, content[i] ) + pitchvalue; end; Ich vermute das ich über CreateFontIndirectW etwas zuchen muss, aber suche eine Beispiel ? Text ist : "َجِبُ عَلَى الإنْسَانِ" Oben mit Textout (codebeispiel), unten mit Drawtext. |
AW: Pitch mit Textoutw und Accents ?
Das GDI und GDI+ kennt nicht nur
![]() Wenn das etwas nicht kann, dann mal eine der anderen APIs ansehen. ![]() ![]() ... Und es gibt nicht nur das GDI. |
AW: Pitch mit Textoutw und Accents ?
Korrekt, das Problem ist aber, so wie ich das sehe: wenn ich eine Widestring pro-zeichen (for 1..length() ) durchlaufe, und jeder Zeichen ausgebe, ist teil davon auch "diakritische zeichen", also ohne spaces.
Entweder muss ich die Zeichen "kennen", oder ich muss am Font selber die Pitch setzen. |
AW: Pitch mit Textoutw und Accents ?
Hier zwei simple Unicode Beispiele.
Für Windows NT =
Delphi-Quellcode:
Für Windows 9x =
procedure TMyControl.Paint;
var S: WideString; r: TRect; begin inherited; r := ClientRect; S := 'This is the integral sign: '#$222b; DrawTextW(Canvas.Handle, PWideChar(S), length(S), r, DT_SINGLELINE or DT_CENTER or DT_VCENTER or DT_END_ELLIPSIS); end;
Delphi-Quellcode:
Gefunden
procedure TMyControl.Paint;
var S: WideString; begin inherited; S := 'This is the integral sign: '#$222b; TextOutW(Canvas.Handle, 0, 0, PWideChar(S), length(S)); end; ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:28 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