Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Draw String limitiert?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 21.10.2012, 18:12    Titel: Draw String limitiert? Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 21.10.2012, 19:39    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 21.10.2012, 19:50    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 21.10.2012, 20:09    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 21.10.2012, 20:20    Titel: Antworten mit Zitat

meinte ja 255 happy

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 21.10.2012, 21:08    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 565
Wohnort: Jüterbog

BeitragVerfasst am: 21.10.2012, 22:55    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 22.10.2012, 01:11    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 22.10.2012, 14:50    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz