AGB  ·  Datenschutz  ·  Impressum  







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

Canvas.TextOut zentrieren

Ein Thema von Nicodius · begonnen am 14. Dez 2011 · letzter Beitrag vom 22. Mär 2012
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#11

AW: Canvas.TextOut zentrieren

  Alt 15. Dez 2011, 09:48
Also bei mir sieht das hier ganz ordentlich aus:
Delphi-Quellcode:
procedure TFormTest.FormPaint(Sender: TObject);
const
  DRAWFLAGS = DT_SINGLELINE or DT_CENTER or DT_VCENTER;
  YOffset = 35;
var
  s: string;
  R: TRect;
  OldFont: TFont;

  procedure DrawRect;
  begin
    R.Top := R.Top + YOffset;
    R.Bottom := R.Bottom + YOffset;
    DrawText(Canvas.Handle, PChar(s), -1, R, DRAWFLAGS);
  end;

begin
  OldFont := TFont.Create;
  try
    //alten Font sichern
    OldFont.Assign(Canvas.Font);
    R := Rect(0, 0, ClientWidth, YOffset);
    s := 'Erste Zeile';
    DrawRect;
    Canvas.Font.Size := 14;
    Canvas.Font.Style := [fsBold];
    s := 'Zweite Zeile';
    DrawRect;
    Canvas.Font.Size := 12;
    Canvas.Font.Style := [fsBold, fsItalic];
    s := 'Dritte Zeile';
    DrawRect;
    Canvas.Font.Size := 20;
    Canvas.Font.Name := 'Times New Roman';
    Canvas.Font.Style := [fsItalic];
    s := 'Vierte Zeile';
    DrawRect;
    //Gesicherten Font wiederherstellen
    Canvas.Font.Assign(OldFont);
  finally
    OldFont.Free;
  end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#12

AW: Canvas.TextOut zentrieren

  Alt 15. Dez 2011, 10:10
Danke DeddyH! Das hat prima funktioniert.

Würde mich trotzdem itneressieren warum das TextWidth mit dem fsbold nicht umgehen kann.

lg Nico
Nico Müller
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#13

AW: Canvas.TextOut zentrieren

  Alt 15. Dez 2011, 10:13
Das kann ich aus dem Hut leider auch nicht sagen. Evtl. bringt ein Blick in die Delphi-Sourcen Licht ins Dunkel.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#14

AW: Canvas.TextOut zentrieren

  Alt 15. Dez 2011, 10:23
kann es sein dass Du TextWidth nicht neu berechnen lässt nach der Umstellung auf Bold ?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
FrankJ28

Registriert seit: 7. Apr 2008
211 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Canvas.TextOut zentrieren

  Alt 15. Dez 2011, 10:30
Vielleicht ein Reihenfolgeproblem,
erst Bold, dann TextWidth setzen?
Ciao
Frank

EDIT: Thomas war schneller
"Sage was du tust, und tue was du sagst"
Johannes Rau
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#16

AW: Canvas.TextOut zentrieren

  Alt 15. Dez 2011, 10:34
Wenn er ASMs Code 1:1 übernommen hat, kann es daran ja eigentlich nicht liegen, da dort der Font erzeugt, übergeben und anschließend ausgewertet wird.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#17

AW: Canvas.TextOut zentrieren

  Alt 15. Dez 2011, 11:46
Nein wurde zuerst bold gesetzt und dann berechnet. Wirklich seltsam.
Nico Müller
  Mit Zitat antworten Zitat
mz23
(Gast)

n/a Beiträge
 
#18

AW: Canvas.TextOut zentrieren

  Alt 22. Mär 2012, 18:55
Nein wurde zuerst bold gesetzt und dann berechnet. Wirklich seltsam.
Vielleicht hat der Canvas nicht mehr dieselbe Breite nach dem Style
setzen?!

Nur Vermutung:
Image1.Picture.Graphic.Width := Image1.Width;
Image1.Picture.Graphic.Height := Image1.Height;
neu setzen.

Schöne Grüße aus Nürnberg,
Manfred
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#19

AW: Canvas.TextOut zentrieren

  Alt 22. Mär 2012, 19:08
Wieso Image? Er hat doch direkt auf das Formular gezeichnet.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 14:39 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