Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi [Image.Canvas.TextOut] €-Zeichen "malen" (https://www.delphipraxis.net/74264-%5Bimage-canvas-textout%5D-%80-zeichen-malen.html)

xZise 31. Jul 2006 15:26


[Image.Canvas.TextOut] €-Zeichen "malen"
 
Ich habe die Schriftart BN Machine und will ein €-Zeichen auf ein Image "schreiben"!
Allerdings übergeht er dass und zeichnet anstelle gar nichts...

Und ich habe in einem Label und bei Micorsoft Word das €-Zeichen mit der Schriftart BN MAchine getestet! Und es geht!

3_of_8 31. Jul 2006 15:28

Re: [Image.Canvas.TextOut] €-Zeichen "malen"
 
Ein Label ist ein TGraphicControl und benutzt intern auch TextOut.

Zeig mal deinen Code.

xZise 31. Jul 2006 15:31

Re: [Image.Canvas.TextOut] €-Zeichen "malen"
 
Delphi-Quellcode:
const MONEY: array[1..26] of Extended = (0.01, 0.20, 0.50, 1, 5, 10, 20, 50, 100, 200, 300, 400, 500,
                                   1000, 2500, 5000, 7500, 10000, 12500, 15000, 20000, 25000,
                                   50000, 100000, 150000, 250000);

procedure TfMain.bNewGameClick(Sender: TObject);
var
  i, rnd : Integer;
  BM_MoneyNum : array [1..26] of Byte;
  Nums : TNumsArray;
begin
  if not Running then begin
{...}
    LeftMoney.Canvas.Brush.Style := bsClear;
    LeftMoney.Canvas.Font.Name := 'BN Machine';
    LeftMoney.Canvas.Font.Height := 16;
    RightMoney.Canvas.Brush.Style := bsClear;
    RightMoney.Canvas.Font.Name := 'BN Machine';
    RightMoney.Canvas.Font.Height := 16;
    for i := 0 to 12 do begin
      LeftMoney.Canvas.Draw(0, i * 21 + i * 3, Plakette_0.Picture.Graphic);
      LeftMoney.Canvas.TextOut((LeftMoney.Width - LeftMoney.Canvas.TextWidth(FloatToStr(MONEY[i + 1]) + ' €')) div 2, i * 24 + 5, FloatToStr(MONEY[i + 1]) + ' €');
      LeftMoney.Repaint;
      RightMoney.Canvas.Draw(0, i * 21 + i * 3, Plakette_0.Picture.Graphic);
      RightMoney.Canvas.TextOut((RightMoney.Width - RightMoney.Canvas.TextWidth(FloatToStr(MONEY[i + 14]) + ' €')) div 2, i * 24 + 5, FloatToStr(MONEY[i + 14]) + ' €');
      RightMoney.Repaint;
      Sleep(100);
    end;
{...}
end;

himitsu 31. Jul 2006 15:32

Re: [Image.Canvas.TextOut] €-Zeichen "malen&a
 
Welchen Wert (Ordinal) hat'n das €?

Eventuell paßt der ZeichenCode nicht?

im Unicode hat dieses z.B. den Wert 8364 und das paßt z.B. nicht in einen AnsiString ._.

[add]
schau mal in der Zeichentabelle (Programm Charmap) nach und verwende direkt diese Code

3_of_8 31. Jul 2006 15:33

Re: [Image.Canvas.TextOut] €-Zeichen "malen"
 
Tu das Repaint raus.

xZise 31. Jul 2006 15:44

Re: [Image.Canvas.TextOut] €-Zeichen "malen"
 
@3of8
Also an dem repaint kann es nicht liegen, weil ich es auch an anderen Stellen mache (ohne repaint)

Zitat:

Zitat von himitsu
Welchen Wert (Ordinal) hat'n das €?

Also laut "Showmessage(IntToStr(ord('€')));" ist es 128.

Zitat:

Zitat von himitsu
[add]
schau mal in der Zeichentabelle (Programm Charmap) nach und verwende direkt diese Code

Wass soll ich da herausfinden? Und wie kann ich Unicodezeichen in einen String schreiben?


[edit]Also ein Chr(128) anstelle des € hats nicht getan :(

himitsu 31. Jul 2006 15:50

Re: [Image.Canvas.TextOut] €-Zeichen "malen&a
 
Zitat:

Zitat von xZise
Wass soll ich da herausfinden? Und wie kann ich Unicodezeichen in einen String schreiben?


[edit]Also ein Chr(128) anstelle des € hats nicht getan :(

icht was es in deinem Ansi (im QuellText für einen Code hat, sonden den Code aus dem Zeichensatz :zwinker:

z.B. ein Edit mit der Schriftart und dem Zeichen und dann.
Delphi-Quellcode:
Edit1.Text := IntToStr(Ord(Edit1.Text[1]));
oder mal mit
Delphi-Quellcode:
Edit1.Text := '€';
überprüfen.

und du bist dir auch sicher, daß der Text innerhalb des Bildes liegt und nicht nur ä bissl außerhalb?


[add]
OK, ich seh grad es sollte zentriert sein ._.

PS: einmal berechnen reicht auch schon aus :)
Delphi-Quellcode:
S := FloatToStr(MONEY[i + 14]) + ' €';
RightMoney.Canvas.TextOut((RightMoney.Width - RightMoney.Canvas.TextWidth(S)) div 2, i * 24 + 5, S);

3_of_8 31. Jul 2006 15:51

Re: [Image.Canvas.TextOut] €-Zeichen "malen"
 
Das kann mit Repaint eigentlich gar nicht gehen, da dann das Bild komplett überzeichnet wird.

himitsu 31. Jul 2006 15:53

Re: [Image.Canvas.TextOut] €-Zeichen "malen&q
 
Zitat:

Zitat von 3_of_8
Das kann mit Repaint eigentlich gar nicht gehen, da dann das Bild komplett überzeichnet wird.

nur bei 'ner PaintBox, oder ählichem ... aber wenn die Zahl und das Bild dahinter sichtbar sind, dann stimmt halt was mit dem € nicht.

xZise 31. Jul 2006 15:54

Re: [Image.Canvas.TextOut] €-Zeichen "malen"
 
Ziemlichsicher (ein a zeichnet er :D )

Ich werds mal mit dem Edit prüfen ^^

Zitat:

Zitat von 3_of_8
Das kann mit Repaint eigentlich gar nicht gehen, da dann das Bild komplett überzeichnet wird.

? Und was ist, wenn der gleiche Code ein paar Zeilen tiefer ist (andere Prozedur) und da kein repaint ist?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 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