Seite 1 von 1
Einzelne PIXEL ändern
Verfasst: 04.11.2024 12:54
von PIC18F2550
Hallo,
über die Funktionen CreateImage, StartDrawing, StopDrawing und ImageGadget kann ich zwar ein Bild erstellen muss aber bei jeder kleinen änderung das ganze Bild neu generieren.
Gibt es eine möglichkeit in dem angezeigzen Bild einzelne Pixel zu verändern ohne alles neu Aufbauen zu müssen?
Danke.
Re: Einzelne PIXEL ändern
Verfasst: 04.11.2024 13:08
von Olafmagne
PIC18F2550 hat geschrieben: 04.11.2024 12:54
Hallo,
über die Funktionen CreateImage, StartDrawing, StopDrawing und ImageGadget kann ich zwar ein Bild erstellen muss aber bei jeder kleinen änderung das ganze Bild neu generieren.
Gibt es eine möglichkeit in dem angezeigzen Bild einzelne Pixel zu verändern ohne alles neu Aufbauen zu müssen?
Danke.
Mit StartDrawing kannst Du doch auf dem Bild Zeichnen! (Imageoutput(#Image) )
D.h. Das Image wird Nicht neu aufgebaut sondern nur verändert.
Olaf
Re: Einzelne PIXEL ändern
Verfasst: 04.11.2024 13:40
von STARGÅTE
Du kannst das
CanvasGadget nutzen.
Hier kannst du die Pixel manipulieren, und es wird sofort im Gadget angezeigt.
Re: Einzelne PIXEL ändern
Verfasst: 04.11.2024 19:09
von PIC18F2550
Ok werd ich morgen mal Probieren.
Re: Einzelne PIXEL ändern
Verfasst: 04.11.2024 20:52
von mk-soft
Beim ImageGadget musst du nach dem ändern das Image mit SetGadgetState aktualisieren
Kleine Spielerei
Code: Alles auswählen
;-TOP
Procedure UpdateImageGadget(image)
Protected color, x, y
color = Random($FFFFFF, $404040)
x = Random(280, 10)
y = Random(180, 10)
If StartDrawing(ImageOutput(image))
Circle(x, y, 10, color)
StopDrawing()
SetGadgetState(0, ImageID(image))
EndIf
EndProcedure
Procedure UpdateWindow()
Protected dx, dy
dx = WindowWidth(0)
dy = WindowHeight(0) - StatusBarHeight(0) - MenuHeight()
; Resize Gadgets
EndProcedure
Procedure Main()
Protected dx, dy
#WinStyle = #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget
If OpenWindow(0, #PB_Ignore, #PB_Ignore, 600, 400, "Test Window", #WinStyle)
; MenuBar
CreateMenu(0, WindowID(0))
MenuTitle("&File")
MenuItem(99, "E&xit")
; StatusBar
CreateStatusBar(0, WindowID(0))
AddStatusBarField(#PB_Ignore)
CreateImage(0, 300, 200, 24, #White)
; Gadgets
dx = WindowWidth(0)
dy = WindowHeight(0) - StatusBarHeight(0) - MenuHeight()
ImageGadget(0, 10, 10, 300, 200, ImageID(0))
; Bind Events
BindEvent(#PB_Event_SizeWindow, @UpdateWindow())
AddWindowTimer(0, 1, 250)
; Main Loop
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Select EventWindow()
Case 0
Break
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case 99
PostEvent(#PB_Event_CloseWindow, 0, 0)
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
Case #PB_Event_Timer
Select EventTimer()
Case 1
UpdateImageGadget(0)
EndSelect
EndSelect
ForEver
EndIf
EndProcedure : Main()