Problem mit ImageBuffer

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

MBC

Betreff: Problem mit ImageBuffer

BeitragMo, Nov 08, 2004 19:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Also, ich habe mir den FontCreator aus diesem https://www.blitzforum.de/view...ontcreator Topic (dritter Beitrag) genommen und ein wenig damit rumexperimentiert. Und irgendwie ist da was komisch: Wenn ich den Text so mit
Code: [AUSKLAPPEN]

Setbuffer BackBuffer()
BMPText normal,0,0,"Hallo!"
flip
WaitKey()

schreibe wird der auch prima angezeigt. so weit so gut. Wenn ich dasselbe nun aber im imageBuffer mach, also
Code: [AUSKLAPPEN]

bild=createimage(800,600)
Setbuffer ImageBuffer(bild)
BMPText normal,0,0,"Hallo!"
setbuffer backbuffer()
drawimage bild,0,0

mache, dann wird da irgendwie nix angezeigt Question
Weiß jemand warum?

Und falls hier ein Fehler liegen sollte, das ist mein test-code:
Code: [AUSKLAPPEN]
Include "bmpfont.bb"

Graphics 800,600,32,1
SetBuffer BackBuffer()

normal=LoadBMPFont("normal")

Color 0,0,0
ClsColor 255,255,255
Cls

bild=CreateImage(800,600)
SetBuffer ImageBuffer(bild)
BMPText normal,10,10,"Hallo Welt!!!"

SetBuffer BackBuffer()

Text 0,5,"Das Bild:"
DrawImage bild,100,5

Text 0,BMPFontHeight(normal)+30,"Der Text:"
BMPText normal,100,BMPFontHeight(normal)+30,"Hallo Welt!!!"

Flip

WaitKey()


also, danke schon im vorraus
MfG
MBC
Computer sind auch nur Menschen! Wink
 

ke^kx

BeitragMo, Nov 08, 2004 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab das auch noch nicht so ganz durchschaut Embarassed . Probiers aber trotzdem einfach mal indem du's so machst:
Code: [AUSKLAPPEN]

Setbuffer ImageBuffer(bild)
bild=createimage(800,600)
BMPText normal,0,0,"Hallo!"
setbuffer backbuffer()
drawimage bild,0,0
Flip


Jiriki
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM

MBC

BeitragMo, Nov 08, 2004 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
funktioniert leider auch nicht Sad , "Image does not exist", da das Bild ja dem imgebuffer zugewiesen wird, bevor man es definiert hat (wenn man das so sagen kann), dann weiß er ja z.b. die größe nicht

Trotzdem danke @ Jiriki
MfG
MBC
Computer sind auch nur Menschen! Wink
 

Dreamora

BeitragMo, Nov 08, 2004 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Definitiv nicht. Du kannst keinen Buffer nutzen den du noch garnicht erzeugt .

Das Problem scheint eher zu sein, dass der 2te BMPFont an den mehr oder weniger gleichen Ort zeichnet wie das erste Mal ...

versuchs ma mit weiter unten hinschreiben ...

( Obs BMPFont intern Probleme geben könnt, weiss ich nicht, da ich es nicht benutze )
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Kabelbinder

Sieger des WM-Contest 2006

BeitragMo, Nov 08, 2004 19:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht hast du die Falsche Maskierung drin. Also der Hintergrund istz ja weiß, schau mal nach.
Ansonsten sehe ich ImageBuffer-mäßig da überhaupt kein Problem. Mit normalem Text z.B. geht das:
Code: [AUSKLAPPEN]
Graphics 800,600,32,1
SetBuffer BackBuffer()

;normal=LoadBMPFont("normal")
normal = LoadFont("Century",20,1,0,1)
SetFont normal

Color 0,0,0
ClsColor 255,255,255
Cls

bild=CreateImage(800,600)
SetBuffer ImageBuffer(bild)
Text 10,10,"Hallo Welt!!!",0,0

SetBuffer BackBuffer()

Text 0,5,"Das Bild:"
DrawImage bild,100,5

;Text 0,BMPFontHeight(normal)+30,"Der Text:"
;BMPText normal,100,BMPFontHeight(normal)+30,"Hallo Welt!!!"

Flip

WaitKey()



Vielleicht liegt der Fehler an der Funktion. Bist du sicher, dass du sie richtig angewandt hast?
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

MBC

BeitragMo, Nov 08, 2004 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist es leider auch nicht. man sieht auch mit bunten Hintergrund unsd so nix. Und ich bin mir ziemlich sicher, die Funktion richtig angewandt zu haben, da der Text ohne Imagebuffer funktioniert. Irgendwie komisch. Dann kanns doch eigentlich nur noch an der include liegen, das die mit Imagebuffer nicht klar kommt. Aber gibt's sowas überhaupt!?!? *jetzttotalverwirrtsei*

Naja, gut dann, falls jemand noch was weiß, weitere Antworten sind durchaus erwünscht
Danke für alle antworten bisher
Mfg
MBC
Computer sind auch nur Menschen! Wink

D2006

Administrator

BeitragMo, Nov 08, 2004 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

Ich vermute mal es liegt an der "Font Library". Vielleicht ist da ein Setbuffer Backbuffer() im Code drin, so dass es gar nicht gehen kann.

Schau mal im Include. Könntest ja auch mal wichtige Zeilen pasten.

MfG

MBC

BeitragMo, Nov 08, 2004 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
ich verzweifel noch! Da ist kein, aber auch gar kein setbuffer, cls oder flip oder sowas drin! Warum geht denn das dann nicht!?
Falls e was bringt, ist hier mal die Schreib-Funktion aus der Include:
Code: [AUSKLAPPEN]

Function BMPText(bmpfnt,x#,y#,txt$,h_align=0,v_align=0,width=0)
   ; x,y      - coordinates
   ; txt$      - Text to display on the screen
   ; h_align   - should text be horizontally centred?
   ; v_align   - should text be vertically centred?
   ; width      - if greater than 0, text is wrapped to that width
   
   ; This function returns the total height of the BMPtext which
   ; is useful if you want to set other values like window heights
   ; to the height of the text as it wraps.
   
   ; If you wish to retrieve the height without drawing text, then see
   ; the BMPTextHeight command
   
   Local xx#,yy#
   
   fnt.bmpfont = Object.bmpfont(bmpfnt)
   flines=fnt\height[Asc("X")]
   maxasc=122+4*fnt\extrachar+(255-126)*fnt\extendedchar
   If width>0
      txt=txt+" "
      i=0 ww=0
      While Instr(txt," ",i+1)>0
         For j=i+1 To Instr(txt," ",i+1)
            a=Asc(Mid(txt,j,1))
            If a=>Asc(" ") And a<=maxasc
               ww=ww+fnt\width[a]
            ElseIf a=13
               j=j+1
               flines=flines+fnt\height[Asc("X")]
               ww=0 w=0
               Exit
            End If
            If ww+fnt\width[a]=>width And w>0 Then
               txt = Left(txt,i-1) + Chr(13) + Right(txt,Len(txt)-i)
               ww=0 w=0 flines=flines+fnt\height[Asc("X")]
               j=i+1
            End If
         Next
         i=j-1
         w=ww
      Wend
      i=0 txt=Left(txt,Len(txt)-1)+Chr(13)
      If v_align Then y = y - flines/2
      xx = x  yy = y
      While Instr(txt,Chr(13),i+1)>0
         If h_align
            For j=i+1 To Instr(txt,Chr(13),i+1)-1
               a=Asc(Mid(txt,j,1))
               If a=>Asc(" ") And a<=maxasc Then xx=xx-fnt\width[a]*.5
            Next
         End If
         For j=i+1 To Instr(txt,Chr(13),i+1)-1
            a=Asc(Mid(txt,j,1))
            If a=>Asc(" ") And a<=maxasc
               DrawImageRect fnt\img,xx,yy,fnt\x[a],fnt\y[a],fnt\width[a],fnt\height[a]
               xx=xx+fnt\width[a]
            End If
         Next
         i=j
         yy=yy+fnt\height[Asc("X")] xx=x
      Wend
   Else
      If h_align
         For i=1 To Len(txt)
            a=Asc(Mid(txt,i,1))
            If a=>Asc(" ") And a<=maxasc
               x=x-fnt\width[a]/2
            End If
         Next
      End If
      If v_align y=y-flines/2
         
      ;   For i=1 To (Len(txt)>1)
      ;      a=Asc(Mid(txt,i,1))
      ;      If a=>Asc(" ") And a<=122
      ;         y=y-fnt\height[a]/2*flines
      ;      End If
      ;   Next
      ;End If
      xx=x yy=y
      For i=1 To Len(txt)
         a=Asc(Mid(txt,i,1))
         If a=13
            xx=x yy=yy+fnt\height[Asc("X")]
         ElseIf a=>Asc(" ") And a<=maxasc
            DrawImageRect fnt\img,xx,yy,fnt\x[a],fnt\y[a],fnt\width[a],fnt\height[a]
            xx=xx+fnt\width[a]
         End If
      Next
   End If
   
   Return flines
End Function


@D2006: War ne prima idee, danke

MfG
MBC
Computer sind auch nur Menschen! Wink

Kabelbinder

Sieger des WM-Contest 2006

BeitragDi, Nov 09, 2004 0:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, wenn man den Text immerhin auf den BackBuffer ausgeben kann, ist das doch auch schonmal viel wert.
Vielleicht könntest du mit dem Befehl GrabImage() arbeiten.
Der kopiert einen Ausschnitt des Bildschrims des aktuellen Buffers in ein Bild. Schau am besten mal inder Onlinehilfe nach.
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group