AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Zeichenfont ausgeben - wie? (Verständnisfrage)
Thema durchsuchen
Ansicht
Themen-Optionen

Zeichenfont ausgeben - wie? (Verständnisfrage)

Ein Thema von profmaster · begonnen am 25. Nov 2005 · letzter Beitrag vom 28. Nov 2005
Antwort Antwort
profmaster

Registriert seit: 9. Feb 2005
Ort: Frakfurt/Oder
21 Beiträge
 
Delphi 7 Professional
 
#1

Zeichenfont ausgeben - wie? (Verständnisfrage)

  Alt 25. Nov 2005, 20:46
Hallo!

Ich habe einen Font 8x16, um ein Beispiel zu geben. Dieser sei in einer Datei pixelweise gespeichert. Ein Array wäre dafür:

type
TFont8x16 = array[0..4095] of byte;

Schließlich müssen die Schriftzeichen in der Datei auch byteweise abgelegt werden, damit sich deren Aussehen vom BIOS Zeichensatz unterscheidet, abgesehen davon, das auch der Zeichensatz im ROM letzlich aus Bitmustern besteht.

Wie wird so ein Font nun ausgegeben? Ich habe folgenden Ansatz:

Delphi-Quellcode:
type
 TFont8x16 = array[0..4095] of byte;


procedure OutChars;
var
  i,ix,iy,m,n: Integer;
  chars: array[0..255] of array[0..7,0..15] of byte; //Eine Möglichkeit
  Font: TFont8x16;
begin
  move(Font,chars,sizeof(charSet8x16));
  ix := 0; n := 0;
  iy := 0; m := 0;
  for i := 0 to sizeof(charset8x16)-1 do
  begin
     //chars[ch,ix,iy];
     ix := (i mod 8) + n;
     PutPixelXY(ix,iy,Font[i],color);
     inc(iy);
     if (iy mod 16) = 0 then
     begin
        inc(n,8); iy := 0;
     end;
  end;
end;
Und Hier -> PutPixel:

Delphi-Quellcode:
procedure putpixel();
var Bitnum: Integer;
begin
       for num := 0 to 7 do
        if IsBitTrue(pixel,num) then
          Bildspeicher[X + Y * XRes] := VordergrundFarbe
        else Bildspeicher[X + Y * XRes] := HintergrundFarbe;
     end;
end;
Die Sache mit der Bitnummer wegzulassen, bringt auch nichts. In welchem Format sind solche Fonts gespeichert und wie gibt man sie aus?

Wer kann helfen?

profmaster
  Mit Zitat antworten Zitat
Progcoder

Registriert seit: 8. Feb 2005
17 Beiträge
 
#2

Re: Zeichenfont ausgeben - wie? (Verständnisfrage)

  Alt 25. Nov 2005, 23:28
Hallo!

Mit OutText krigst Du das doch automatisch. Gibt es in jeder vernünftigen Grafikbibliothek!

Progcoder
Dumm kann man ruhig sein. Man muß sich nur zu helfen wissen.
  Mit Zitat antworten Zitat
profmaster

Registriert seit: 9. Feb 2005
Ort: Frakfurt/Oder
21 Beiträge
 
Delphi 7 Professional
 
#3

Re: Zeichenfont ausgeben - wie? (Verständnisfrage)

  Alt 25. Nov 2005, 23:54
Hallo!

Zitat von progcoder:
Mit OutText krigst Du das doch automatisch. Gibt es in jeder vernünftigen Grafikbibliothek!
Richtig, aber wie machen die das. Hab hier folgendes gefunden. Entwerder es liegt an der fortgeschrittenen Zeit, oder ich raff wirklich irgendwas nich.

Delphi-Quellcode:
//Die Kommentare sind von mir und beschreiben MEIN bisheriges Verständnis des Ablaufes!

PROCEDURE Outtextxy(Dest:VirtualWindow;x,y:LongInt;r,g,b:Word;Ketten:String);
VAR q,q2,q3,q4,q5,q6,q7 : Byte;
Begin
 ypos1:=y; //YPosition festlegen
 q6 :=length(ketten); //Stringlänge zwischenspeichern
 xpos1:=x+q6*(textsize shl 3); // ??? Was macht die Berechnung?
 q7 :=textsize-1;
 For q:= 1 to q6 do
 begin
  For q2:= 0 to 7 do //Ausgabe 7 Byte als je ein Pixel vorbereiten
  begin
  //Dann Zwischenvariable als String mit Einsen, wo Bitmuster für Zeichen
   Kette:=DezToBin(FontVariable[(ord(Ketten[q]) shl 3)+q2]); //Warum ..shl 3?
   For q3:=0 to 7 do If Kette[q3+1]='1then // ??
   for q4:=0 to q7 do // ?? raff ich gar nich
   for q5:=0 to q7 do // ??
   PutPixel(Dest,x+q5+q3*textsize+(q-1)*(textsize shl 3),y+q4+(q2*textsize),r,g,b);
   //Die Berechnung in PutPixel raff ich auch nicht.
  end;
 end;
End;
Rafft das einer? Hab mich mit Low Level Grfikprogrammierung lange nich mehr beschäftigt und muss wohl was nachholen! Ich könnte zwar diese fertige Prozedur einfach nehmen und weitermachen, aber wozu gibt es dann OpenSource? Hab deswegen oben, als ich das Thema begonnen habe, ne eigene Version geschrieben, die aber nicht läuft. Hab die eigene Version in der Hoffnung geschrieben, dann diesen Quelltext hier besser zu versteheen und weil ich eine Grafikbibliothek optimieren will/muss, und dazu muß ich nun mal den bisherigen Ablauf verstehen
Vielleicht sollte ich auch jezt einfach Scluss machen und nach der Nachtruhe diesen Quelltext noch mal anschauen. Werd ich jetz auch tun,

Gute Nacht

profmaster


P.S. Hab bei der Outtextxy Procedure die Fontdefinition jetzt auf die Schnelle nicht rausgesucht, hoffe aber das das Anlegen der Bitmuster eh standardisiert ist.

Muß ich etwa erst meine Fontdefinition mit meinem BIOS Zeichengenerator verbinden, bevor die meinige Version funzt? Egal, morgen ist auch noch ein Tag!
  Mit Zitat antworten Zitat
profmaster

Registriert seit: 9. Feb 2005
Ort: Frakfurt/Oder
21 Beiträge
 
Delphi 7 Professional
 
#4

Re: Zeichenfont ausgeben - wie? (Verständnisfrage)

  Alt 28. Nov 2005, 11:59
Hab's rausgekrigt, wie's geht.

Tja, oberste Regel beim Programmieren:

Programmiere nie nach einer Party, wenn du dort was getrunken hast. Das erste [0..7] weggelassen in meinem ersten Beitrag bei der Felddimension und: BUMM -> es funzt, wie gewollt. Danke für Eure vielen Antworten.

Profmaster
  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 04:04 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