 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 21.10.2012, 18:12 Titel: Draw String limitiert? |
|
|
Wollte mir der einfachheit ein eigenen Font für 'Draw String' zusammenstellen, was im grunde gut funktioniert und recht einfach ist, im moment scheint es mir aber das Irgendwas limitiert ist... sobald ich mehr als 128 Zeichen nutzen möchte funktioniert (zeichnet) Draw String nicht mehr... alles darunter funktioniert tedellos?!
Da weder hier, im englischen forum oder in der hilfe was zu finden ist frag ich mal hier.... _________________
 |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 21.10.2012, 19:39 Titel: |
|
|
Beispielprogramm? Beachte, dass Draw String natürlicherweise nicht von selbst die Zeile umbricht bei zu langen Strings... vielleicht bist du nur am Fensterende angekommen... Deswegen wäre ein Beispiel sehr praktisch. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 21.10.2012, 19:50 Titel: |
|
|
Hab kein Beispiel mehr zur Hand:
Ich hatte je eine bmp (256x256 und 512x512) mit 16x16 (256) Zeichen von chr(0-255)
diese habe ich aus der BMP ausgelesen und in ein extra image geschrieben mit den erforderlichen Headerinformationen (Version 0, firstchar 0, lastchar 0, size 16/32, sizew 16/32, ..., ...)
Alles hatte seinen platz, seine information und alles funktioniert, wenn ich maximal 128 Zeichen davon 'eingelesen/verarbeitet' habe zB 32-150... sobald ich aber alle bzw mehr zeichen wie 0-255 wollte ging nichts mehr...
Ob ich über den Rand 'geschrieben' habe habe ich auch schon versucht und einen 'kürzeren String' zum testen genommen, aber daran lag es wohl nicht...
Hab mir nun eine alternativ Routine geschrieben...
Komisch scheint es mir dennoch... _________________
 |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 21.10.2012, 20:09 Titel: |
|
|
lastchar=0 kommt mir komisch vor - müsste das nicht 255 sein? _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 21.10.2012, 20:20 Titel: |
|
|
meinte ja 255
hatte mir zum auslesen der chars 2 const erstellt
firstchar und lastchar, der rest lief dann per schleifen
Jedenfalls ging alles wenn ich nur einen teil der zeichen ausgelesen habe unabhängig welche und wenn es weniger als 128 waren... wenn ich versucht habe mehr als 128 auszulesen ging es nicht mehr, das image war aber 'voll' _________________
 |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 21.10.2012, 21:08 Titel: |
|
|
mit eschrift von Volta kann ich problemlos 129 Zeichen laden (mehr habe ich aus Faulheit nicht ausprobiert). Weiß jetzt aber nicht, ob die Version identisch mit dem Code ist, den Volta im Portal gepostet hat. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Muttonhead

Anmeldungsdatum: 26.08.2008 Beiträge: 565 Wohnort: Jüterbog
|
Verfasst am: 21.10.2012, 22:55 Titel: |
|
|
Als ich Charset2FBFont (in Purebasic) geschrieben hab, hatte ich auch schon ein solches Problem:
Aus meiner ReadMe:
Zitat: | Komplette BitmapFonts in 24bit sollten nicht mehr als 16-18 pt haben, ansonsten zeigt Freebasic den
Font nicht mehr an.
mögliche Lösungen:
Mit kleinerem ASCII Bereich kann der Font auch grösser sein... |
|
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 22.10.2012, 01:11 Titel: |
|
|
Ich hatte 32x32 (waren eh zu gross) und 16x16 Charsets, beide konnte ich leider nicht 'komplett' nehmen... hab daher wie gesagt eine alternativ Routine geschrieben... _________________
 |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 22.10.2012, 14:50 Titel: |
|
|
Hi,
solch große Fonts habe ich nie als Schriftart mit 256 Zeichen erstellt.
Da ist es einfacher mit kleinerer Schrift in ein Image zu schreiben und dann das Image vergrößern.
Code: | Declare Sub ImageScale2x(ByVal As UInteger Ptr, ByVal As UInteger Ptr)
ScreenRes 480, 200, 32
Width 480/8, 200/16 ' Fonts 8x16
Dim As Any Ptr a, b
Dim As String s= " Volta "
Dim As Integer breit= Len(s)*8
Dim As Integer hoch= 16
a= ImageCreate(breit, hoch, 0)
Draw String a,(0,0), s, -1
Put (0,0), a, PSet
Sleep 2000
breit *=2 : hoch *=2
b= ImageCreate(breit, hoch, 0)
ImageScale2x a, b
Put(0,0), b, PSet
Sleep 3000
ImageDestroy a
breit *=2 : hoch *=2
a= ImageCreate(breit, hoch, 0)
ImageScale2x b, a
Put(0,0), a, PSet
Sleep 4000
ImageDestroy b
breit *=2 : hoch *=2
b= ImageCreate(breit, hoch, 0)
ImageScale2x a, b
Put(0,0), b, PSet
Sleep
ImageDestroy a
ImageDestroy b
'ImageScale2x (source image ptr, Dest image ptr)
Sub ImageScale2x(ByVal Image As UInteger Ptr, ByVal Dest As UInteger Ptr)
Dim As UInteger B, D, E, F, H
Dim As Integer j, k, ic, dc, dp, x, y, pitch
ImageInfo Dest,dp,,,,Dest
ImageInfo image,x,y,,pitch,image
pitch \= 4
'|A|B|C|
'+-+-+-+ / |E0|E1|
'|D|E|F| E +--+--+
'+-+-+-+ \ |E2|E3|
'|G|H|I|
For k = 0 To y-1
For j = 0 To x-1
If k Then B = Image[ic - pitch] Else B = Image[ic]
If k = y-1 Then H = Image[ic] Else H = Image[ic + pitch]
If j Then
D = E
E = F
Else
E = Image[ic]
D = E
EndIf
If j < x-1 Then F = Image[ic + 1]
If B <> H And D <> F Then
If D = B Then Dest[dc] = D Else Dest[dc] = E
If B = F Then Dest[dc + 1] = F Else Dest[dc + 1] = E
If D = H Then Dest[dc + dp] = D Else Dest[dc + dp] = E
If H = F Then Dest[dc + dp +1] = F Else Dest[dc + dp +1] = E
Else
Dest[dc] = E
Dest[dc + 1] = E
Dest[dc + dp] = E
Dest[dc + dp +1] = E
End If
ic +=1
dc +=2
Next j
ic = ic+pitch-x
dc = dc+((dp-x)*2)
Next k
End Sub |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|