FreeImage in Functions

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Mathe

Betreff: FreeImage in Functions

BeitragSo, Nov 09, 2008 12:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute,

ich hab mir gestern mal einige Functions geschrieben wo ich Button ins BB3D nutzen kann nur ist mir heute leider aufgefallen das der Befehl FreeImage nicht so funktioniert wie es sollte! Eigentlich sollte ja der Befehl FreeImage die Datei aus dem Ramspeicher löschen, aber leider funktioniert das nicht und das Programm braucht immer mehr Speicher bis es abstürzt.

Edit:
Hab jetzt noch mal meine normale DrawButton Function probiert und festgestellt das hier das Problem auch auftritt! Es könnte jetzt nur noch an der Font liegen aber die wird ja auch am Schluss der Function gelöscht... Sad

Hier die Komplette Function



Code: [AUSKLAPPEN]
Function DrawPicButton(ID%)
M_X% = MouseX()
M_Y% = MouseY()
x.PicButton = Object.PicButton(ID)
Button_Font = LoadFont("Times New Roman",30)
SetFont Button_Font

If M_X <= x.PicButton\X + x.PicButton\ButtonPic_Width And M_X >= x.PicButton\X And M_Y <= x.PicButton\Y + x.PicButton\ButtonPic_Height And M_Y >= x.PicButton\Y
   GFX = LoadImage(x.PicButton\ButtonPic_Pfad_ak)
   DrawImage GFX, x.PicButton\X, x.PicButton\Y
   Text x.PicButton\ButtonPic_Text_X, x.PicButton\ButtonPic_Text_Y, x.PicButton\ButtonPic_Text
Else
   GFX = LoadImage(x.PicButton\ButtonPic_Pfad_deak)
   DrawImage GFX, x.PicButton\X, x.PicButton\Y
   Text x.PicButton\ButtonPic_Text_X, x.PicButton\ButtonPic_Text_Y, x.PicButton\ButtonPic_Text
EndIf
FreeImage GFX
FreeFont Button_Font
Return
End Function


mfg.
Matthias

ozzi789

BeitragSo, Nov 09, 2008 14:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach einfach in der Function am schluss(wo freefunction usw steht) ein
Code: [AUSKLAPPEN]
free=1


und in der Hauptschleife ein
Code: [AUSKLAPPEN]
if free=1
  free=0
    FreeImage GFX
    FreeFont Button_Font
endif



Aber wieso lädst du die Dateien jedes mal wen du die Funktion aufrufst ? oO
Mach doch einfach Loadimage am Anfang des ganzen Codes und Freeimage ganz am Ende(also vor end)
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

Mathe

BeitragSo, Nov 09, 2008 17:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab jetzt den Code noch mal vollständig überarbeitet nun werden die Bilder in einer Type Feld abgespeichert... und werden nicht mehr vom Speicher gelöscht!

Und die Fonts wurden in ein Dim Feld eingetragen!

Edit: ... dann halt Type Feld....Embarassed

mfg.
  • Zuletzt bearbeitet von Mathe am So, Nov 09, 2008 18:43, insgesamt 2-mal bearbeitet

The_Nici

BeitragSo, Nov 09, 2008 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ist eine Type-Variable? Oo
Ich kenne nur eine Instanz, ein Feld und ein Type.
Eine Grafik in einer Zeichen-Funktion zu laden ist so oder so nicht gebräuchlich.
VOR der Schleife laden, IN der Schleife Zeichnen.

MfG
 

Mathe

BeitragSo, Nov 09, 2008 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
ich mein Ja ein Type Feld.... Embarassed
das mitn Laden in einer Zeichen-Funktion war voll der scheiß deshalb habs ichs ja behoben... Very Happy

So hier noch mal ein Ausschnitt von der CreatePicButton() und DrawPicButton() Function:
Wird momentan noch mal überarbeitet...

Code: [AUSKLAPPEN]
Function CreatePicButton(ID%,Pfad_ak$,Pfad_deak$,Btn_Text$,Btn_X%,Btn_Y%,Btn_XZen%, Btn_YZen%)
   For x.PicButton = Each PicButton
      If ID = x.PicButton\ButtonPic_ID Then Return
   Next
   
   TypeZaehlen = TypeZaehlen + 1

   x.PicButton = New PicButton
   If Pfad_ak = Pfad_deak Then
      x.PicButton\ButtonPic_Image_ak = LoadImage(Pfad_ak$)
      x.PicButton\ButtonPic_Image_ak = x.PicButton\ButtonPic_Image_deak
   Else
      x.PicButton\ButtonPic_Image_ak = LoadImage(Pfad_ak$)
      x.PicButton\ButtonPic_Image_deak = LoadImage(Pfad_deak$)
   EndIf
   
   SetFont Font_Button_ButtonPic(1)

   Btn_Height% = ImageHeight(x.PicButton\ButtonPic_Image_ak)
   Btn_Width% = Imagewidth(x.PicButton\ButtonPic_Image_ak)
   Text_Height% = StringHeight(Btn_Text)
   Text_Width% = StringWidth(Btn_Text)

   If Btn_XZen = True Then Btn_X = Btn_X - Btn_Width/2
   If Btn_YZen = True Then Btn_Y = Btn_Y - Btn_Height/2

   Btn_Text_X = Btn_X + Btn_Width/2 - Text_Width/2
   Btn_Text_Y = Btn_Y + Btn_Height/2 - Text_Height/2

      x.PicButton\X = Btn_X
      x.PicButton\Y = Btn_Y
      x.PicButton\ButtonPic_Text = Btn_Text
      x.PicButton\ButtonPic_Text_X = Btn_Text_X
      x.PicButton\ButtonPic_Text_Y = Btn_Text_Y
      x.PicButton\ButtonPic_Width = Btn_Width
      x.PicButton\ButtonPic_Height = Btn_Height
      x.PicButton\ButtonPic_ID = Handle x.PicButton

Return Handle x.PicButton
End Function

Function DrawPicButton(ID%)
M_X% = MouseX()
M_Y% = MouseY()
x.PicButton = Object.PicButton(ID)
   SetFont Font_Button_ButtonPic(1)

   If M_X <= x.PicButton\X + x.PicButton\ButtonPic_Width And M_X >= x.PicButton\X And M_Y <= x.PicButton\Y + x.PicButton\ButtonPic_Height And M_Y >= x.PicButton\Y Then
      DrawImage x.PicButton\ButtonPic_Image_ak, x.PicButton\X, x.PicButton\Y
      Text x.PicButton\ButtonPic_Text_X, x.PicButton\ButtonPic_Text_Y, x.PicButton\ButtonPic_Text
   Else
      DrawImage x.PicButton\ButtonPic_Image_deak, x.PicButton\X, x.PicButton\Y
      Text x.PicButton\ButtonPic_Text_X, x.PicButton\ButtonPic_Text_Y, x.PicButton\ButtonPic_Text
   EndIf
Return
End Function

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group