Seite 1 von 1

Linien in Panel zeichnen

Verfasst: 08.03.2011 13:10
von ozoffi
Hallo!

Irgendwie schaffe ich es nicht einen Raster in einem Panel zu zeichnen.
Im Fenster funktioniert dies einwandfrei:

Enumeration
#panel1
EndEnumeration

OpenWindow (0,1,1,608,400,"line",#PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget )


PanelGadget(#panel1, 5, 5, 599, 371)
AddGadgetItem(#panel1, 1, "Panel1")


StartDrawing(WindowOutput(0))


For x = 87 To 276 Step 8
Line(10, x, 560, 1,RGB(180,180,180))
Next x


StopDrawing()




Repeat

Event = WaitWindowEvent()
Select Event

Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
End
Mir ist klar, dass "StartDrawing(WindowOutput(0)) " eben in einem Fenster zeichnet, nur welchen Befehl brauche ich, dass ich den Raster in dem Panel dargestellt bekomme?

Danke für Eure Mühe

lg
Oliver

Re: Linien in Panel zeichnen

Verfasst: 08.03.2011 13:16
von STARGÅTE
Auf ein Fenster/Panel zu zeichen ist schlecht, da es immer wieder gelöscht wird, wenn es sich aktuallisiert (verschieben oder so)

Nutze dafür ein ImageGadget welches du deaktivierst.

Code: Alles auswählen


Enumeration
	#panel1
	#BackgroundImage
	#BackgroundGadget
EndEnumeration

OpenWindow (0,1,1,608,400,"line",#PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget )


PanelGadget(#panel1, 5, 5, 599, 371)
AddGadgetItem(#panel1, 1, "Panel1") 


CreateImage(#BackgroundImage, GetGadgetAttribute(#panel1, #PB_Panel_ItemWidth), GetGadgetAttribute(#panel1, #PB_Panel_ItemHeight), 32|#PB_Image_Transparent)
StartDrawing(ImageOutput(#BackgroundImage)) 
DrawingMode(#PB_2DDrawing_AlphaBlend)
For x = 87 To 276 Step 8
	Line(10, x, 560, 1,RGBA(180,180,180,255))
Next x
StopDrawing() 
ImageGadget(#BackgroundGadget, 0, 0, GetGadgetAttribute(#panel1, #PB_Panel_ItemWidth), GetGadgetAttribute(#panel1, #PB_Panel_ItemHeight), ImageID(#BackgroundImage))
DisableGadget(#BackgroundGadget, #True)


Repeat 
	
	Event = WaitWindowEvent() 
	Select Event 
			
		Case #PB_Event_CloseWindow
			Quit = 1
	EndSelect 
Until Quit = 1 
End 

Re: Linien in Panel zeichnen

Verfasst: 08.03.2011 13:52
von ozoffi
Hallo!
Vieln Dank für die rasche un kompetente Lösung!

Leider kennt meine Version 4.41 den Transparent-Tag noch nicht.
Gibt es noch eine ander Lösung als Upgraden?

Re: Linien in Panel zeichnen

Verfasst: 08.03.2011 14:00
von STARGÅTE
Lösch die Konstante bei CreateImage und füge stattdessen einfach dies noch nach dem StartDrawing ein:

Code: Alles auswählen

DrawingMode(#PB_2DDrawing_AllChannels)
Box(0,0,ImageWidth(#BackgroundImage), ImageHeight(#BackgroundImage), 0)
das leert das Image und macht es transparent

Re: Linien in Panel zeichnen

Verfasst: 08.03.2011 16:37
von ozoffi
Servus!

Danke - nur leider kommt dann

#PB_2DDrawing_AllChannels: Konstante nicht gefunden ...

Offenbar auch ein Befehl den meine Version nicht kennt.

Re: Linien in Panel zeichnen

Verfasst: 08.03.2011 17:05
von STARGÅTE
dann nimm #PB_2DDrawing_AlphaChannel

Re: Linien in Panel zeichnen

Verfasst: 08.03.2011 17:37
von rolaf
Schon mal

Code: Alles auswählen

DrawingMode(16)
probiert. :mrgreen:

"#PB_2DDrawing_AlphaBlend" entspricht dem Wert 16
#PB_2DDrawing_AllChannels = 256
#PB_2DDrawing_AlphaChannel = 8

Re: Linien in Panel zeichnen

Verfasst: 08.03.2011 18:04
von super_castle
wenn du keine raubkopie von purebasic hast, kannst doch einfach das neueste purebasic 4.51 als regristrierter nutzer runterladen.

gruss

Re: Linien in Panel zeichnen

Verfasst: 08.03.2011 18:27
von ozoffi
Hallo!
Danke - das habe ich jetzt auch gemacht (ich dachte, ich muss erneut zahlen ... ist ja nicht so selbstverständlich, dass man gratis immer die Updatews bekommt).
Funktioniert jetzt einwandfrei!