Seite 1 von 1

Box auf jpg-Bild zeichnen

Verfasst: 14.04.2007 18:16
von Panik
Hallo !

Habe folgenden Code , bei dem es mir nicht gelingt einen Rahmen auf das Bild zu zeichnen.
Erst wenn ich mal andere Fenster von anderen Anwendungen zeitweise aktiviere und dann das compilierte Programm, sehe ich , das meine Linien zwar gezeichnet wurden , aber eine Ebene tiefer liegen.Ich kann sie während/nachdem ich sie male nicht sehen.

Code: Alles auswählen

Enumeration
  #window_0
  #imagegadget
EndEnumeration

Procedure GetMouseX(Gadget) 
  GetCursorPos_(mouse.POINT) 
  MapWindowPoints_(0,GadgetID(Gadget),mouse,1) 
  ProcedureReturn mouse\x 
EndProcedure 
Procedure GetMouseY(Gadget)    
  GetCursorPos_(mouse.POINT) 
  MapWindowPoints_(0,GadgetID(Gadget),mouse,1) 
  ProcedureReturn mouse\y 
EndProcedure 

If OpenWindow(#window_0,0,0,710,540,"Aufnahmen",  #PB_Window_SystemMenu | #PB_Window_TitleBar |#PB_Window_ScreenCentered )
  CreateGadgetList(WindowID(#window_0)) 
  TextGadget(11,  10,0,100,20,"MouseClick X: 0") 
  TextGadget(12,10,0,100,20,"MouseClick Y: 0") 
EndIf

file$ = "C:\Dokumente und Einstellungen\Patrick\Eigene Dateien\UW_Fuji1\Bild_0001.jpg"

UseJPEGImageDecoder()
LoadImage(1, file$)
If ImageHeight(1)>ImageWidth(1)  
  ImageGadget(#imagegadget, 377, 145,240,320,  ResizeImage(1,240,320))
Else
  ImageGadget(#imagegadget, 377, 145,320,240, ResizeImage(1,320,240))
EndIf 

posx = 5
posy = 5

Repeat
  SmartWindowRefresh(#window_0,1)
  Select WaitWindowEvent()     
    Case #PB_Event_CloseWindow:End 
    Case 13100 ;#WM_LBUTTONDOWN 
      SetGadgetText(11,"MouseClick X: "+Str( GetMouseX(#imagegadget))) 
      SetGadgetText(12,"MouseClick Y: "+Str( GetMouseY(#imagegadget)))     
      StartDrawing(ImageOutput(1))
    
      Box( posx , posy, GetMouseX(#imagegadget) - posx , GetMouseY(#imagegadget) - posy , $FF0000)            
      Box(GetMouseX(#imagegadget) -1 , GetMouseY(#imagegadget) -8 ,    2 , 16) 
      Box(GetMouseX(#imagegadget) - 8, GetMouseY(#imagegadget) - 1  , 16, 2  ) 
      StopDrawing()  
  EndSelect 
ForEver 


Verfasst: 14.04.2007 18:23
von Kaeru Gaman
> aber eine Ebene tiefer liegen.
das ist unsinn.

du musst das gadget nach dem zeichnen refreshen, direkt nach dem stopdrawing, innerhalb der bedingung.

Verfasst: 14.04.2007 18:28
von ts-soft
Füg mal hinter StopDrawing folgendes ein:

Code: Alles auswählen

SetGadgetState(#imagegadget, ImageID(1))

:wink:

edit
rechtschreib korrigiert

Verfasst: 14.04.2007 18:31
von Kaeru Gaman
ich war jetzt unsicher, ob die ID sich auch ändert bei resize,
weil er ja in der ersten zuweisung nicht direkt die ID drin hat, sondern ResizeImage()...

Verfasst: 16.04.2007 17:57
von Panik
Danke ! Das hat geklappt mit dem Refresh des Gadgets ...