TransparentSpriteColor

Anfängerfragen zum Programmieren mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Yoshi hat geschrieben:Aber wenn ich statt

Code: Alles auswählen

OpenWindow()

Code: Alles auswählen

OpenScreen()
oder

Code: Alles auswählen

OpenWindowedScreen()
schreibe öffnet ers gar nicht :shock:
bitte setz dich mal in ruhe hin, und lies dir die Help durch.

das hier ist das Anfängerforum.
wenn man mit was anfängt, dann muss man auch weitermachen.

also, mach weiter und tu mal selber ein minimum.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Yoshi
Beiträge: 95
Registriert: 09.01.2007 16:42

Beitrag von Yoshi »

Okay, jetzt habe ich meinen Hintergrund und OpenScreen() eingegeben, aber mein Sprite wird trotzdem nicht geöffnet.

Code: Alles auswählen

If OpenWindow(0,0,0,620,470,"test")
  If CreateGadgetList(WindowID(0))
    ScrollBarGadget(0,0,450,620,20,1,10,10)
    ScrollBarGadget(1,600,0,20,450,1,10,10,#PB_ScrollBar_Vertical)
    ImageGadget(2,0,0,599,450,Image0)
    
    OpenScreen(620,470,16,"test")
      LoadSprite(0,"Parabel.bmp",0)
      TransparentSpriteColor(0,RGB(0,255,0))
      
    Else 
      MessageRequester("Fehler!","Screen kann nicht geöffnet werden!",0)
      End
    
  EndIf
EndIf
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Wenn ich mich mal einmischen darf:

Yoshi, ich würde dazu raten dir ein neues Hobby zu suchen oder alternativ auf eines der vielen Game-Creation-Sets zurückzugreifen.
Dort kannst du in der Regel dein Game easy zusammenklicken (denke ich zumindest mal, hab nie eines in den Fingern gehabt).

So wie ich das hier sehe, ignorierst du fröhlich jede Hilfestellung der Kollegen und hast fundamentale Verständigungsprobleme.

Oder du ziehst dich wirklich erst mal ne Woche zurück auf ne einsame Insel und versuchst hinter so manches Geheimnis des Programmierens zu kommen.

Weil ich fürchte, dass dir hier mittlerweile keiner mehr Hilfe geben wird, da es schlicht und ergreifend unmöglich ist dich in deinem jetzigen Wissensstand zu erreichen.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Lass dich nicht unterkiregen.

Joschy :mrgreen:

Was hast du vor? Gib mal einen Tipp.

Schau mal hier
http://www.purebasic.fr/german/viewtopi ... scrollarea

....

>>> Achtung, es ist keine Parabel, auch wenn es verdammt danach aussieht. :allright:

Code: Alles auswählen


; Autor: Folker Linstedt
; Datum: 2007|08|21

InitSprite() 

OpenWindow(0,0,0,800,600,"Geometrie",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) 
CreateGadgetList(WindowID(0)) 


OpenWindowedScreen(ContainerGadget(1,50,100,403,403,#PB_Container_Double),0,0,400,400,0,0,0) 

  CloseGadgetList()
  ScrollBarGadget(2, 250,60,200,20,0,400,100)
  ScrollBarGadget(3, 470,110,20,200,0,400,100,#PB_ScrollBar_Vertical)

;/ Weißer Hintergrund mit KoopdinatenSystem
CreateSprite(0,400,400)
StartDrawing(SpriteOutput(0))
  Box(0,0,400,400,RGB(255,255,255))
   For i=0 to 19
      LineXY(20*i,0,20*i,400,RGB(128,128,128))
      LineXY(0,20*i,400,20*i,RGB(128,128,128))
    Next 
  Box(199,0,3,400,0)
  Box(0,199,400,3,0) 
StopDrawing()
;/

;/ Parabel
CreateSprite(1,400,400)
StartDrawing(SpriteOutput(1))
For i=0 to 400
  ; y=x*x
  q.f=i/7
  a.f=i
  Circle(200+a,200-(q)*(q),2,RGB(255,0,0))
  Circle(200-a,200-(q)*(q),2,RGB(255,0,0))
Next 
StopDrawing()


Repeat 

  Event=WaitWindowEvent()
  
  If Event=#PB_Event_CloseWindow
    Quit=1
  EndIf
  
  DisplaySprite(0,0,0)
  DisplayTransparentSprite(1,GetGadgetState(2),GetGadgetState(3))
  
  FlipBuffers()
  

Until Quit=1
Um das geometrische Gebilde noch hübscher zu machen, kann man den vorherigen Punkt mit dem nächsten durch eine Linie verbinden lassen.
Sieht dann schicker aus und ist nicht so gepunktet.
Oder du interpolierst.

Hoffe, ich konnte dir weiter helfen.

Ich weiß auch nicht genau, ob du dir so etwas vorgestellt hast oder wie du es gern haben wolltest.

Die Frage ist, ob Sprites überhaupt sinnvoll sind bei einem Geometrieprogramm. Das kannst du auch mit Images machen bzw. deine Figuren, Formen, Funktionen direkt drauf malen.

Es sei denn, sie sind sehr rechenintensiv und du willst sie ständig verschieben :mrgreen: :allright:

>>>>> p.s. da ich mit rot gezeichnet habe und die Standardfarbe der Transparenz "NULL" ist, wird der schwarze Hintergrund bei der Parabel nicht angezeigt. Wenn du grün nehmen möchtest.

Dann tu das :allright:
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Zum Selbsteinstellen bzw. Ausstellen :allright:

Code: Alles auswählen

InitSprite() 

OpenWindow(0,0,0,800,600,"Geometrie",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) 
CreateGadgetList(WindowID(0)) 


OpenWindowedScreen(ContainerGadget(1,50,100,403,403,#PB_Container_Double),0,0,400,400,0,0,0) 

CloseGadgetList()
ScrollBarGadget(2, 250,60,200,20,0,400,100)
ScrollBarGadget(3, 470,110,20,200,0,400,100,#PB_ScrollBar_Vertical)

ButtonGadget(4,50,50,150,30,"Transparenz",#PB_Button_Toggle)

;/ Weißer Hintergrund mit KoopdinatenSystem
CreateSprite(0,400,400)
StartDrawing(SpriteOutput(0))
Box(0,0,400,400,RGB(255,255,255))
For i=0 to 19
  LineXY(20*i,0,20*i,400,RGB(128,128,128))
  LineXY(0,20*i,400,20*i,RGB(128,128,128))
Next 
Box(199,0,3,400,0)
Box(0,199,400,3,0) 
StopDrawing()
;/

;/ Parabel
CreateSprite(1,400,400)
StartDrawing(SpriteOutput(1))
Box(0,0,400,400,RGB(0,255,0))
For i=0 to 400
  ; y=x*x
  q.f=i/7
  a.f=i
  Circle(200+a,200-(q)*(q),2,RGB(255,0,0))
  Circle(200-a,200-(q)*(q),2,RGB(255,0,0))
Next 
StopDrawing()

  
Repeat 
  
  Event=WaitWindowEvent()
  
  If Event=#PB_Event_CloseWindow
    Quit=1
  EndIf
  
  debug GetGadgetState(4)
  
  If GetGadgetState(4)
    TransparentSpriteColor(1,RGB(0,255,0))
    else
    TransparentSpriteColor(1,0)
  EndIf
  
  DisplaySprite(0,0,0)
  DisplayTransparentSprite(1,GetGadgetState(2),GetGadgetState(3))
  
  FlipBuffers()
  
  
Until Quit=1

Noch einmal erweitert ...

Code: Alles auswählen


Procedure SpriteParabel()
  ;/ Parabel
  CreateSprite(1,400,400)
  StartDrawing(SpriteOutput(1))
  Box(0,0,400,400,RGB(0,255,0))
  For i=0 to 400
    ; y=x*x
    q.f=i/7
    a.f=i
    Circle(200+a,200-(q)*(q),2,RGB(255,0,0))
    Circle(200-a,200-(q)*(q),2,RGB(255,0,0))
  Next 
  StopDrawing()
EndProcedure

InitSprite() 

OpenWindow(0,0,0,800,600,"Geometrie",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) 
CreateGadgetList(WindowID(0)) 


OpenWindowedScreen(ContainerGadget(1,50,100,403,403,#PB_Container_Double),0,0,400,400,0,0,0) 

CloseGadgetList()
ScrollBarGadget(2, 250,60,200,20,-400,400,0)
ScrollBarGadget(3, 470,110,20,200,-400,400,0,#PB_ScrollBar_Vertical)
ButtonGadget(9,460,70,30,30,"|_")

ButtonGadget(4,50,20,150,30,"Transparenz",#PB_Button_Toggle)
StringGadget(5,50,50,70,30," F A R B E ",#PB_String_ReadOnly)
SetGadgetColor(5,#PB_Gadget_BackColor,RGB(0,255,0))

ButtonGadget(6,120,50,80,30,"Ändern")

ButtonGadget(7,50,80,80,20,"Sprite laden")
ButtonGadget(8,130,80,70,20,"Parabel")


;/ Weißer Hintergrund mit KoopdinatenSystem
CreateSprite(0,400,400)
StartDrawing(SpriteOutput(0))
Box(0,0,400,400,RGB(255,255,255))
For i=0 to 19
  LineXY(20*i,0,20*i,400,RGB(128,128,128))
  LineXY(0,20*i,400,20*i,RGB(128,128,128))
Next 
Box(199,0,3,400,0)
Box(0,199,400,3,0) 
StopDrawing()
;/

SpriteParabel()

  
Repeat 
  
  Event=WaitWindowEvent()
  
  If Event=#PB_Event_CloseWindow
    Quit=1
  EndIf
  
  If Event=#PB_Event_Gadget
    GadgetNr=EventGadget()
    
    If GadgetNr=6
      SetGadgetColor(5,#PB_Gadget_BackColor,ColorRequester(GetGadgetColor(5,#PB_Gadget_BackColor)))
      
    EndIf
    
    If GadgetNr=7
      
      If Not LoadSprite(1,OpenFileRequester("Parabel-Bild","C:\Parabel.bmp","BMP",0))
        SpriteParabel()
     
      EndIf
       If IsSprite(1)
         SetGadgetAttribute(2, #PB_ScrollBar_Minimum ,-SpriteWidth(1))
         SetGadgetAttribute(3, #PB_ScrollBar_Minimum ,-SpriteHeight(1)) 
       EndIf
      
    EndIf
    
    If GadgetNr=8
      SpriteParabel()
    EndIf
    
    If GadgetNr=9
      SetGadgetState(2,0)
      SetGadgetState(3,0)
    EndIf
    
  EndIf
  
  If GetGadgetState(4)
    TransparentSpriteColor(1,GetGadgetColor(5,#PB_Gadget_BackColor))
    else
    TransparentSpriteColor(1,0)
  EndIf
  
  debug GetGadgetState(2)
  debug GetGadgetState(3)
  
  DisplaySprite(0,0,0)
  DisplayTransparentSprite(1,GetGadgetState(2),GetGadgetState(3))
  
  FlipBuffers()
  
  
Until Quit=1
Den Rest musst du nun verstehen und dir hinbasteln :mrgreen:

Oder frag einfach, wenn was ist.

Gruß, Folker :allright:
Kinder an die Macht http://scratch.mit.edu/
Antworten