TransparentSpriteColor

Anfängerfragen zum Programmieren mit PureBasic.
Yoshi
Beiträge: 95
Registriert: 09.01.2007 16:42

Beitrag von Yoshi »

Code: Alles auswählen

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 213, -5, 620, 470, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      ImageGadget(#Image_0, 0, 0, 599, 450, Image0)
      ScrollBarGadget(#ScrollBar_0, 0, 450, 620, 20, 0, 10, 3)
      ScrollBarGadget(#ScrollBar_1, 600, 0, 20, 450, 0, 10, 3, #PB_ScrollBar_Vertical)
      ImageGadget(#Image_2, 190, 100, 250, 250, Image1)
    EndIf
    If OpenWindowedScreen(WindowID(#Window_0),213,-5,620,470,0,0,0)
      CreateSprite(0,250,250)
      LoadSprite(0,"Parabel.bmp",0)
      TransparentSpriteColor(0,RGB(0,255,0))
  EndIf
EndProcedure
Jetzt meckert er nicht mehr. :D

Muss ich jetzt noch ImageGadget(#Image_2, 190, 100, 250, 250, Image1)
rausnhgemen?
Yoshi
Beiträge: 95
Registriert: 09.01.2007 16:42

Beitrag von Yoshi »

Also ich habe jetzt mal ein bisschen getestet und jedes mal wenn ich auf "Complimieren/Starten" klicke und er mir das Fenster öffnet kommt "PureBasic1.exe hat ein Problem festgestellt und muss beendet werden."

Code: Alles auswählen

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 213, -5, 620, 470, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      ImageGadget(#Image_0, 0, 0, 599, 450, Image0)
      ScrollBarGadget(#ScrollBar_0, 0, 450, 620, 20, 0, 10, 3)
      ScrollBarGadget(#ScrollBar_1, 600, 0, 20, 450, 0, 10, 3, #PB_ScrollBar_Vertical)
      ImageGadget(#Image_2, 190, 100, 250, 250, Image1)
    EndIf
    If OpenWindowedScreen(WindowID(#Window_0),213,-5,620,470,0,0,0)
      CreateSprite(0,250,250)
      LoadSprite(0,"Parabel.bmp",0)
      TransparentSpriteColor(0,RGB(0,255,0))
    EndIf
  EndIf
EndProcedure

If Open_Window_0()
  Select WindowEvent() 
      Case #PB_Event_Menu 
        Select EventMenu()
          Case 1
            MessageRequester("Test","Teeeeeeeeeeeeeeest!",0)
        EndSelect
  EndSelect
EndIf
End
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Yoshi hat geschrieben:

Code: Alles auswählen

If OpenWindowedScreen(WindowID(#Window_0),213,-5,620,470,0,0,0)
PB-Debugger hat geschrieben:InitSprite() must be called before using 'Screen' commands.
Grüße ... Kiffi
a²+b²=mc²
Yoshi
Beiträge: 95
Registriert: 09.01.2007 16:42

Beitrag von Yoshi »

Jetzt bleibt das Fenster nicht mehr offen.
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Yoshi hat geschrieben:Jetzt bleibt das Fenster nicht mehr offen.
Ägypten? Kannst Du Dich ein wenig verständlicher ausdrücken?
a²+b²=mc²
Yoshi
Beiträge: 95
Registriert: 09.01.2007 16:42

Beitrag von Yoshi »

Das Febster bleibt 1 Millisekunde lange offen und schließt sich anschließend wieder!
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Yoshi hat geschrieben:Das Febster bleibt 1 Millisekunde lange offen und schließt sich anschließend wieder!
ja, da fehlt die Repeat-Until-Schleife um die Abfrage der Events.

und jetzt erzähl uns bitte nicht, dass Du nicht weißt, was eine Event-Schleife ist.
Das ist Dir hier im Forum oft genug erklärt worden.


Grüße ... Kiffi
a²+b²=mc²
Yoshi
Beiträge: 95
Registriert: 09.01.2007 16:42

Beitrag von Yoshi »

Danke.

Jetzt hab ich nóch eine Frage zum ScrollBarGadget. Ich habe in einem Fenster ein Koodinatensystem und eine Parabel, die ich mit Hilfe des ScrollbarGadgets nach links,rechts,oben und unten verschieben möchte.

Kann ich dann in meinem Quelltext schreiben

Code: Alles auswählen


If #ScrollBar_0 +1
  Then ImageGadget(#Image_2, 190, 100, 251, 250, Image1)
EndIf
If #ScrollBar_0 +2 
  Then ImageGadget(#Image_2, 190, 100, 252, 250, Image1)
(In der Prozedur ist Image1 so angegeben:

Code: Alles auswählen

ImageGadget(#Image_2, 190, 100, 250, 250, Image1)
)

oder wäre es besser so zu schreiben:

Code: Alles auswählen

If #ScrollBar_0 =1
  ImageGadget(#Image_2, 190, 100, 251, 250, Image1)
EndIf
If #ScrollBar_0 =2
  ImageGadget(#Image_2, 190, 100, 252, 250, Image1)
EndIf
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Du überprüfst in deinem IF/THEN block der Wert einer Konstante! Diese ändert sich aber nicht. Benutze eine normale Variabel.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ne, das müsste ja eher

Code: Alles auswählen

NewValue = GetGadgetState(#ScrollBar_0)
If NewValue  <> OldValue
  If NewValue  > OldValue
    ; scrolled to the right
  Else
    ; scrolled to the left
  EndIf
  OldValue = NewValue  
EndIf
sein, oder irgendsowas...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten