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.