AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Pitch mit Textoutw und Accents ?
Thema durchsuchen
Ansicht
Themen-Optionen

Pitch mit Textoutw und Accents ?

Ein Thema von myicq · begonnen am 12. Mai 2018 · letzter Beitrag vom 14. Mai 2018
Antwort Antwort
myicq

Registriert seit: 5. Jan 2016
70 Beiträge
 
Delphi 6 Professional
 
#1

Pitch mit Textoutw und Accents ?

  Alt 12. Mai 2018, 20:48
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:
    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;
Klappt auch ABER geht mit zB Arabisch und Hebräisch shief. Zehe Beispiel unten:

Ich vermute das ich über CreateFontIndirectW etwas zuchen muss, aber suche eine Beispiel ?

Text ist : "َجِبُ عَلَى الإنْسَانِ"

Oben mit Textout (codebeispiel), unten mit Drawtext.
Miniaturansicht angehängter Grafiken
unicodetest.png  
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Pitch mit Textoutw und Accents ?

  Alt 13. Mai 2018, 11:19
Das GDI und GDI+ kennt nicht nur MSDN-Library durchsuchenDrawText.

Wenn das etwas nicht kann, dann mal eine der anderen APIs ansehen.
MSDN-Library durchsuchenTextOut?


MSDN-Library durchsuchenDrawString
...

Und es gibt nicht nur das GDI.
$2B or not $2B
  Mit Zitat antworten Zitat
myicq

Registriert seit: 5. Jan 2016
70 Beiträge
 
Delphi 6 Professional
 
#3

AW: Pitch mit Textoutw und Accents ?

  Alt 14. Mai 2018, 09:33
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.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Pitch mit Textoutw und Accents ?

  Alt 14. Mai 2018, 09:45
Hier zwei simple Unicode Beispiele.

Für Windows NT =
Delphi-Quellcode:
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;
Für Windows 9x =
Delphi-Quellcode:
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;
Gefunden hier.
Gruß vom KodeZwerg
  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 17:07 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