Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Bitarray erzeugen aus Schriftzug


Pegasusowl - Fr 25.05.07 10:40
Titel: Bitarray erzeugen aus Schriftzug
Hallo,

ich möchte gerne ein Bitarray erzeugen aus einem beliebigen schriftzug...

beispiel: ein T soll dann

00000000000
00111111100
00000100000
00000100000
00000100000
00000000000

werden.....es darf aber auch eine beliebige Strichstärke sein die dann ein entsprechend
grösseres Array mit breiteren Strichdicken füllt....

wie fange ich das am besten an? hat jemand dazu vielleicht eine Idee?


Moderiert von user profile iconChristian S.: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Fr 25.05.2007 um 10:59


Narses - Fr 25.05.07 11:00

Moin!

- Bitmap anlegen
- Größe und pf1Bit setzen
- Mit .Canvas.Textout() draufmalen
- z.B. mit .Pixels[] in einer Schleife die einzelnen Bildpunkte abfragen
;)

cu
Narses


Pegasusowl - Fr 25.05.07 11:10

könnte man nicht aus dem schriftzug direkt auf die "Font-Bits" zugreifen und die direkt in das Array schreiben?
Der Schriftzug besteht doch eltzendlich auch nur aus einem Bitarray....

Nur ich weiss noch nciht wie ich das einzeln machen kann. Letztenendes soll jemand in einer Form einen Text schreiben
der dann als Bitarray weiterverarbeitet werden kann.......(da bin ich nciht so der grosse Programmierer. ich bekomme
zwar die Form und das Textfeld hin...aber wie dann weiter?)


Narses - Fr 25.05.07 11:48

Moin!

user profile iconPegasusowl hat folgendes geschrieben:
könnte man nicht aus dem schriftzug direkt auf die "Font-Bits" zugreifen und die direkt in das Array schreiben?
Der Schriftzug besteht doch eltzendlich auch nur aus einem Bitarray....

Jaein, TTFs sind Vektorzeichensätze. ;) Sicherlich wird Windows die Ausprägungen irgendwo cachen, aber da wirst du vermutlich nicht rankommen. :|

user profile iconPegasusowl hat folgendes geschrieben:
Letztenendes soll jemand in einer Form einen Text schreiben der dann als Bitarray weiterverarbeitet werden kann.

Geht doch so, wie von mir skizziert. ;)

cu
Narses


Pegasusowl - Fr 25.05.07 11:54

ok...ich hab nen Problem mit dem pixel auslesen bis jetzt schreieb ich nen text raus.....bekomme die infos aber nciht in ein bitarray rein. canvas.pixels[0,0] bringt mir eine Variable vom Typ TColor...wie frage ich die ab?


Narses - Fr 25.05.07 12:07

Moin!

user profile iconPegasusowl hat folgendes geschrieben:
canvas.pixels[0,0] bringt mir eine Variable vom Typ TColor...wie frage ich die ab?

Sagen wir mal, du füllst vor dem Schreiben das Bitmap mit clWhite und setzt .Font.Color auf clBlack.

Was schätzt du denn wohl, welche Werte beim Abfragen per .Pixels[] rauskommen... :P :roll:

cu
Narses


Pegasusowl - Fr 25.05.07 13:10

ich hatte jetzt mal das beispiel aus der Hilfe herangezogen und war jetzt eigentlich erstmal davon ausgegangen die werte mal einzeln abzufragen...einfach damit ich mir vorstellen kann was da ankommt...der code dafür sieht so aus:


Bitmap := TBitmap.create;
try
Canvas.TextOut(0,0,'TESTBEISPIEL');
Farbe:=Canvas.Pixels[0,0];


nur wie gebe ich "farbe" aus?
(sorry aber ich mach nicht ganz soviel mit delphi)


Narses - Fr 25.05.07 13:14

Moin!

Wie wäre es mit: ;)

Delphi-Quelltext
1:
2:
3:
4:
if (Bitmap.Canvas.Pixels[0,0] = clBlack) then
  ShowMessage('Pixel[0,0] ist schwarz!')
else
  ShowMessage('Pixel[0,0] ist nicht schwarz!');

cu
Narses