Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Prozedur für jeden Buchstaben (https://www.delphipraxis.net/85820-prozedur-fuer-jeden-buchstaben.html)

burn 6. Feb 2007 11:46

Re: Prozedur für jeden Buchstaben
 
Hallo René,

tja ich würde ja auch gerne weniger Prozeduren haben, aber wie soll ich das anstellen,
wenn ich jedes Zeichen "malen" will.

Falls du da Ideen hast, immer her damit ...

Steve

NormanNG 6. Feb 2007 12:05

Re: Prozedur für jeden Buchstaben
 
Hi burn,

du kannst zum Beispiel die "Malvorschrift" je Zeichen in einem Array speichern und dann in einer Prozedur zum Malen verwenden.

smudo 6. Feb 2007 12:19

Re: Prozedur für jeden Buchstaben
 
Kannst du mal eine der Prozeduren posten, welche du zum "malen" benutzt?

burn 6. Feb 2007 12:36

Re: Prozedur für jeden Buchstaben
 
Hallo Smudo ...

in etwa so ... is aber nur ganz grob ..

Delphi-Quellcode:
procedure Letter_1;
begin
  TextMoveTo(0,0);
  TextLineTo(0,7);
end;
wobei in TextMoveto und TextLineTo direkt in eine Stringlist geschrieben wird
und noch diverse Transformationen durchgeführt werden...

Delphi-Quellcode:
procedure TextMoveTo(x,y: Double);
begin
  Transform(x,y); // eigene procedure
  List.Add(FloatToStr(x) + ' ' + FloatToStr(y) + ' m')  // String-List
end;
Den Text lass ich dann ungefähr so zeichnen

Delphi-Quellcode:
procedure TextDraw(StartX,StartY,Winkel: Double; Text: String);
var
  i,c : integer
begin
  for i := 1 to length(Text) do
  begin
    c := ord(Text[i]);

    case c of
      49 : Letter_1;
    end;
  end;
end;
Steve

Klaus01 6. Feb 2007 12:45

Re: Prozedur für jeden Buchstaben
 
So würde ich es etwas übersichtlicher finden.

Eine Prozedur zum Textschreiben und eine um die einzelnen Zeichen zu zeichnen.
Delphi-Quellcode:
procedure writeLetter(c:char);
begin
  case c of
    '1' : begin
            TextMoveTo(0,0);
            TextLineTo(0,7);
          end;
    '2' : ....
  end;
end;


procedure TextDraw(StartX,StartY,Winkel: Double; Text: String);
var
  i,c : integer
begin
  for i := 1 to length(Text) do
  begin
    {c := ord(Text[i]);

    case c of
      49 : Letter_1;
    end; }
    writeLetter(Text[i]);
  end;
end;
Grüße
Klaus

smudo 6. Feb 2007 12:56

Re: Prozedur für jeden Buchstaben
 
So wie Klaus das schrieb, meinte ich das auch.
Ist das so nicht machbar?

burn 6. Feb 2007 13:05

Re: Prozedur für jeden Buchstaben
 
Klar ist das auch machbar ...

nur das wird eine riiiiiieeeesige Prozedur ...
(nicht jedes Zeichen ist mit einem Strich gemalt) und das dann alles in einer prozedur ???

Da finde ich persönlich das eine Prozedur pro Zeichen übersichtlicher ist ...

Steve

smudo 6. Feb 2007 14:17

Re: Prozedur für jeden Buchstaben
 
Na das werden doch so mindestens 50 oder mehr Procs.
Und wie gesagt, vieles wird man vielleicht optimieren können, sozusagen den kleinsten gemeinsamen Nenner finden.

Ich stell mir das so vor:

Delphi-Quellcode:
  if c in ['0', '2', '3', '5', '6', '7', '8', '9']
    then male_strich_oben;
  if c in ['2', '3', '4', '5', '6', '8', '9']
    then male_strich_mitte;
  if c in ['0', '2', '3', '5', '6', '8', '9']
    then male_strich_unten;
  ...
Das wären bei einer digitalen Darstellung die waagerechten Striche für die Ziffern.
Natürlich ist das nicht besonders übersichtlich. Besser wärs, für jedes Zeichen vorher festzulegen, welche Striche gemalt werden sollen. Aber der Vorschlag kam ja schon mal.

Die Muhkuh 6. Feb 2007 14:18

Re: Prozedur für jeden Buchstaben
 
Wäre es nicht noch einfacher, eine eigene Schriftart zu erstellen?

burn 6. Feb 2007 16:40

Re: Prozedur für jeden Buchstaben
 
@ smudo
Ja, das würde gehen ist aber wie du selber schon sagst ziehmlich unübersichtlich ...

@ Die MuhKuh
Ich muss die Zeichen selber malen, da die Datei-Formate in die ich ausgeben will, die
Schriftarten nicht so unterstützen wie ich das will ...

Viel Fleißarbeit liegt noch vor mir ( bin erst beim kleinen o ) und das Grund-Problem
ist ja eigentlich gelöst ..

Besten Dank nochmal an alle ...

Steve


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 Uhr.
Seite 2 von 2     12   

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