wie kann man einen Auswahlrahmen auf ein Grafikfeld bringen,
ohne das mir dann die unter dem Rahmen ligende Grafik "zerstört"
wird, bzw. das diese erst immer wieder neu geladen werden muß.
Über Tips bin ich dankbar.
Gruß Donald

Hi,Kaeru Gaman hat geschrieben:du lese auche meine Beitrag, Companero.
Code: Alles auswählen
If OpenWindow(0, 100, 200, 300, 200, "XOR Test")
Mx = -400 : My = -400
StartDrawing(WindowOutput(0))
For t = 0 To 2000
Box (Random(300), Random(200), 4, 4, Random($ffffff))
Next t
StopDrawing()
Repeat
EventID = WaitWindowEvent(25)
If WindowMouseX(0) > 0 And WindowMouseY(0) > 0
StartDrawing(WindowOutput(0))
DrawingMode(#PB_2DDrawing_XOr)
Box(Mx, My, 40, 40)
Box(Mx+1, My+1, 38, 38)
Delay(5)
Box(WindowMouseX(0)-20, WindowMouseY(0)-20, 40, 40)
Box(WindowMouseX(0)-19, WindowMouseY(0)-19, 38, 38)
Mx = WindowMouseX(0)-20 : My = WindowMouseY(0)-20
StopDrawing()
EndIf
Until EventID = #PB_Event_CloseWindow
EndIf
Code: Alles auswählen
If OpenWindow(0, 100, 200, 600, 600, "XOR Test")
Mxold = -400 : Myold = -400
StartDrawing(WindowOutput(0))
For t = 0 To 2000
Circle (10+Random(580), 10+Random(580), Random(10), Random($ffffff))
Next t
StopDrawing()
Repeat
EventID = WaitWindowEvent(25)
If EventID = 512 ; (Habe für Mousemove keien passende Konstante gefunden)
StartDrawing(WindowOutput(0))
DrawingMode(#PB_2DDrawing_XOr)
Box(Mxold, Myold, 40, 40)
Box(Mxold+1, Myold+1, 38, 38)
Mxnew = WindowMouseX(0) : Mynew = WindowMouseY(0)
Box(Mxnew, Mynew, 40, 40)
Box(Mxnew+1, Mynew+1, 38, 38)
Mxold = Mxnew : Myold = Mynew
StopDrawing()
EndIf
Until EventID = #PB_Event_CloseWindow
EndIf
Code: Alles auswählen
EnableExplicit
OpenWindow(0,0,0,400,400,"Auswahlrahmen",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
Global gridSize = 32
Global path.s = "c:\test.bmp"
Global color = #Green
LoadImage(0,path)
If Not IsImage(0)
Debug "Fehler beim Laden von "+path+"!"
End
EndIf
CreateImage(1,ImageWidth(0),ImageHeight(0))
Procedure repaint()
Protected x, y
x = WindowMouseX(0)
y = WindowMouseY(0)
StartDrawing(ImageOutput(1))
DrawImage(ImageID(0),0,0)
If x <> -1 And y <> -1
x = gridSize * Round(x/gridSize,#PB_Round_Down)
y = gridSize * Round(y/gridSize,#PB_Round_Down)
DrawingMode(#PB_2DDrawing_Outlined)
Box(x,y,gridSize,gridSize,color)
EndIf
StopDrawing()
StartDrawing(WindowOutput(0))
DrawImage(ImageID(1),0,0)
StopDrawing()
EndProcedure
Repeat
Define event = WaitWindowEvent(10)
Select event
Case #PB_Event_CloseWindow
End
EndSelect
repaint()
ForEver
"neu geladen werden muß" ist vielleicht ein bißchen unglücklich ausgedrückt, aber ich denke er meinte damit das Restaurieren des Images.Donald hat geschrieben:wie kann man einen Auswahlrahmen auf ein Grafikfeld bringen,
ohne das mir dann die unter dem Rahmen ligende Grafik "zerstört"
wird, bzw. das diese erst immer wieder neu geladen werden muß.
Ach Mensch, jetzt wo ich Deinen Code sehe klatsch ich mir selbt wieder vor die Birne.Donald hat geschrieben:Dachte vielleicht gibt es ja irgendwas einfacheres welches ich bisher noch nicht kenne.