Linien in Panel zeichnen

Anfängerfragen zum Programmieren mit PureBasic.
ozoffi
Beiträge: 41
Registriert: 08.02.2010 20:56

Linien in Panel zeichnen

Beitrag 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
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Linien in Panel zeichnen

Beitrag 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 
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
ozoffi
Beiträge: 41
Registriert: 08.02.2010 20:56

Re: Linien in Panel zeichnen

Beitrag 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?
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Linien in Panel zeichnen

Beitrag 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
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
ozoffi
Beiträge: 41
Registriert: 08.02.2010 20:56

Re: Linien in Panel zeichnen

Beitrag von ozoffi »

Servus!

Danke - nur leider kommt dann

#PB_2DDrawing_AllChannels: Konstante nicht gefunden ...

Offenbar auch ein Befehl den meine Version nicht kennt.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Linien in Panel zeichnen

Beitrag von STARGÅTE »

dann nimm #PB_2DDrawing_AlphaChannel
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: Linien in Panel zeichnen

Beitrag 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
:::: WIN 10 :: PB 5.73 :: (x64) ::::
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Re: Linien in Panel zeichnen

Beitrag von super_castle »

wenn du keine raubkopie von purebasic hast, kannst doch einfach das neueste purebasic 4.51 als regristrierter nutzer runterladen.

gruss
ozoffi
Beiträge: 41
Registriert: 08.02.2010 20:56

Re: Linien in Panel zeichnen

Beitrag 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!
Antworten