ImageID-Probleme

Anfängerfragen zum Programmieren mit PureBasic.
TomDest
Beiträge: 10
Registriert: 17.11.2009 12:17

ImageID-Probleme

Beitrag von TomDest »

Hallo Forum,

ich tue mich sehr schwer mit ImageID, ImageOutput etc.

Seid ihr bitte so nett und bringt mich auf den richtigen Pfad?

Code: Alles auswählen

EnableExplicit

#Bild1=1
Define.i Event, GadgetID

Enumeration
  #wdwHauptfenster
  #btnStart
  #imgAnzeige
EndEnumeration

Procedure Zeichnen()

StartDrawing(ImageOutput(#Bild1))
Line(10,10,30,30,RGB(255,128,255))
StopDrawing()
SetGadgetState(#imgAnzeige, #Bild1)

EndProcedure

If OpenWindow(#wdwHauptfenster, 510, 112, 800, 600, "erster Grafiktest",  #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
  ButtonGadget(#btnStart, 340, 500, 150, 60, "Start")
  GadgetToolTip(#btnStart, "Drücken Sie den Button, um zu starten!")
  ImageGadget(#imgAnzeige, 40, 20, 720, 460, 0, #PB_Image_Border)
EndIf
CreateImage(#Bild1, 720,460)
SetGadgetState(#imgAnzeige, ImageID(#Bild1))


Repeat ; Start of the event loop
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  If Event = #PB_Event_Gadget
    If GadgetID = #btnStart
      Zeichnen()
    EndIf
  EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
Warum bleibt die Zeichenfläche schwarz und es wird hier nicht einfach ein Strich gezeichnet?

Viele Grüße & Vielen Dank,

Tom
Christian+
Beiträge: 213
Registriert: 13.07.2008 10:05
Computerausstattung: Windows 8.1 Pro
AMD Phenom II X4 955 @ 3.2 GHz
4GB RAM
NVIDIA GeForce GTX 660

Re: ImageID-Probleme

Beitrag von Christian+ »

Du musst GadgetID auch immer das aktuelle EventGadget zuweisen sonst wird ein drücken des Button nicht das Zeichnen auslösen.

Code: Alles auswählen

GadgetID = EventGadget()
Außerdem hast du beim SetGadgetState in der Procedur die Konstante als Parameter angegeben statt der ImageID.
Windows 8.1 Pro 64Bit | AMD Phenom II X4 955 @ 3.2 GHz | 4GB RAM | NVIDIA GeForce GTX 660
TomDest
Beiträge: 10
Registriert: 17.11.2009 12:17

Re: ImageID-Probleme

Beitrag von TomDest »

:oops:

Ok, so läuft es nun - Herzlichen Dank!

Code: Alles auswählen

EnableExplicit

#Bild1=1
Define.i Event, WindowID, GadgetID, EventType

Enumeration
  #wdwHauptfenster
  #btnStart
  #imgAnzeige
EndEnumeration

Procedure Zeichnen()
  StartDrawing(ImageOutput(#Bild1))
  Line(10,10,30,30,RGB(255,128,255))
  StopDrawing()
  SetGadgetState(#imgAnzeige, ImageID(#Bild1))

EndProcedure

If OpenWindow(#wdwHauptfenster, 510, 112, 800, 600, "erster Grafiktest",  #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
  ButtonGadget(#btnStart, 340, 500, 150, 60, "Start")
  GadgetToolTip(#btnStart, "Drücken Sie den Button, um zu starten!")
  ImageGadget(#imgAnzeige, 40, 20, 720, 460, 0, #PB_Image_Border)
EndIf
CreateImage(#Bild1, 720,460)
SetGadgetState(#imgAnzeige, ImageID(#Bild1))


Repeat ; Start of the event loop
  
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
  
  GadgetID = EventGadget() ; Is it a gadget event?
  
  EventType = EventType() ; The event type
  
  ;You can place code here, and use the result as parameters for the procedures
  
  If Event = #PB_Event_Gadget
    
    If GadgetID = #btnStart
      Zeichnen()
      
    ElseIf GadgetID = #imgAnzeige
      
    EndIf
    
  EndIf
  
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
Antworten