Schicke Buttons

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

 

Loewe95

Betreff: Schicke Buttons

BeitragSa, Feb 21, 2009 10:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin gerade dabei ein Menü für ein Spiel zu programmieren
und wollte dafür selbstgemalte Buttons benutzten, da der normale
Style etwas hässlich aussieht. Meine Frage ist: Gibt es eine Möglichkeit
Buttons mit .bmp-Dateien zu verknüpfen? Question Question Question
Mhm, ja hab nichts gutes für die Signatur

DAK

BeitragSa, Feb 21, 2009 10:54
Antworten mit Zitat
Benutzer-Profile anzeigen
verwende canvas
Gewinner der 6. und der 68. BlitzCodeCompo

coolo

BeitragSa, Feb 21, 2009 10:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, da B+ auf die Windows GUI aufsetzt, und man nicht Buttons oder andere GUI dinger in ein Canavas zeichnen kann, es sei denn man macht sich einen selbst.

So einen Button zu schreiben, ist außerdem eine arbeit von 1 Minute...
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project!
"Eigenzitate sind nur was für Deppen" -Eigenzitat
  • Zuletzt bearbeitet von coolo am Sa, Feb 21, 2009 13:11, insgesamt einmal bearbeitet
 

DjDETE

BeitragSa, Feb 21, 2009 12:53
Antworten mit Zitat
Benutzer-Profile anzeigen
natürlich kann man in ein canvas zeichnen, wozu sollte es denn sonst gut sein?
mfg
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.
 

Christian+

BeitragSa, Feb 21, 2009 13:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Also mir fallen spontan zwei Lösungen ein entweder ein Canvas und darauf Zeichen oder einen normalen Windows Button mit einem Bild versehen.
strike2Death

coolo

BeitragSa, Feb 21, 2009 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab gemeint, das man keinen B+ Button auf ein Canavas zeichnen kann @Djdete..., habs jetzt deutlicher gemacht.
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project!
"Eigenzitate sind nur was für Deppen" -Eigenzitat
 

DjDETE

BeitragSa, Feb 21, 2009 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
achso, und ich habe das so verstanden, dass er einen button komplett selbst zeichnen will und nicht ein bild auf den button.
mfg dete
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.
 

Loewe95

Betreff: RE Christian+

BeitragSa, Feb 21, 2009 13:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Christian+ hat Folgendes geschrieben:
Also mir fallen spontan zwei Lösungen ein entweder ein Canvas und darauf Zeichen oder einen normalen Windows Button mit einem Bild versehen.

Wie versieht man denn einen Windows Button mit einem Bild?
Mhm, ja hab nichts gutes für die Signatur
 

Christian+

BeitragSa, Feb 21, 2009 15:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
;benötigte Userlibs
;.lib "user32.dll"
;api_SendMessage%(hWnd%,Msg%,wParam%,lParam%):"SendMessageA"
;api_GetWindowLong%(hWnd%,nIndex%):"GetWindowLongA"
;api_SetWindowLong%(hWnd%,nIndex%,dwNewLong%):"SetWindowLongA"
;.lib "gdi32.dll"
;api_CreateBitmap%(nWidth%,nHeight%,nPlanes%,nBitCount%,lpBits*):"CreateBitmap"
;api_DeleteObject%(hObject%):"DeleteObject"

;SetButtonImage(button,bild,wert)
;
;Parameter:
   ;button Identität eines Buttons
   ;bild   Identität eines Bildes (Ist bild=0 entfernt es das Bild wieder allerdings ohne das Fenster zu aktualisieren)
   ;wert   0=ändert das Bild des Button   1=fügt ein Bild zum Button hinzu

Function SetButtonImage(button,image,m=1)
 hbutton=QueryObject(button,1)
 f=api_GetWindowLong(hbutton,-16)
 If image=0 Then
  api_SetWindowLong hbutton,-16,f-128
  Return
 Else
  If m=1 Then
   api_SetWindowLong hbutton,-16,f+128
  EndIf
 End If
 w=ImageWidth(image)
 h=ImageHeight(image)
 ibuffer=ImageBuffer(image)
 LockBuffer ibuffer
 p=CreateBank(w*h*4)
 For y=0 To h-1
  For x=0 To w-1
   PokeInt p,4*(y*w+x)+0,ReadPixelFast(x,y,ibuffer)
  Next
 Next
 UnlockBuffer ibuffer
 i=api_CreateBitmap(w,h,1,32,p)
 FreeBank pixels
 oldimage=api_SendMessage(hbutton,247,0,i)
 If oldimage=0 Then api_DeleteObject(oldimage)
End Function


So mit der Funktion kannst ein Bild einem Button hinzufügen.

mfg Christian+
strike2Death

frontalier

Betreff: absturz

BeitragSo, Feb 22, 2009 0:05
Antworten mit Zitat
Benutzer-Profile anzeigen
hm, schade, ich kriege bei dem befehl "oldimage=api_SendMessage(hbutton,247,0,i)" einen absturz (keinen debug). woran kann das liegen? die lib-einträge sind da, version blitzplus 1.42 / win xp, bild ist 20x20 pix rgb bitmap:

Code: [AUSKLAPPEN]
; WIN main
Global RESX=800 : Global RESY=600
win=CreateWindow("test",10,10,RESX,RESY,0,1)

; buttons
Global bt_go = CreateButton ("SEARCH URL",20,60,200,200,win)

UpdateWindowMenu win

Global img = LoadImage ("1.bmp")
SetButtonImage(bt_go,img,1)

WaitKey()
End
;#################################################
Function SetButtonImage(button,image,m=1)
 hbutton=QueryObject(button,1)
 f=api_GetWindowLong(hbutton,-16)
 If image=0 Then
  api_SetWindowLong hbutton,-16,f-128
  Return
 Else
  If m=1 Then
   api_SetWindowLong hbutton,-16,f+128
  EndIf
 End If
 w=ImageWidth(image)
 h=ImageHeight(image)
 ibuffer=ImageBuffer(image)
 LockBuffer ibuffer
 p=CreateBank(w*h*4)
 For y=0 To h-1
  For x=0 To w-1
   PokeInt p,4*(y*w+x)+0,ReadPixelFast(x,y,ibuffer)
  Next
 Next
 UnlockBuffer ibuffer
 i=api_CreateBitmap(w,h,1,32,p)
 FreeBank p

notify "Bis hier alles gut..."

 oldimage=api_SendMessage(hbutton,247,0,i)
 If oldimage=0 Then api_DeleteObject(oldimage)

End Function
 

Christian+

BeitragSo, Feb 22, 2009 0:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Lösch alles aus der Userlib von dir noch mal raus und mach es neu rein ich denke da liegt das Problem falls es nicht Hilft mal loadimage durch createimage ersetzen zum Testen ob es dann geht ich habe ja das Bild von dir nicht zum Testen doch mit einem von mir geht es. Ich nutze zwar auch BlitzPlus 1.46 zurzeit aber ich habe die Funktion schon vor einiger Zeit genutzt von daher denke ich müsste es mit 1.42 ohne Probleme gehen.
strike2Death

frontalier

BeitragSo, Feb 22, 2009 2:26
Antworten mit Zitat
Benutzer-Profile anzeigen
perfekt - irgend ein anderer eintrag in den beiden libs muss ihn gestört haben, jetzt funzt es Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group