Seite 1 von 1

Markierungspositionierung in Bildbearbeitungsfenster

Verfasst: 29.03.2013 12:43
von Heinz Mendax
Hallo,
ich möchte ein Programm erstellen, mit dem nacheinander 2 Markierungen (Kreuze o.ä.) auf dem Bildbearbeitungsfenster des
Programmes Stereomoviemaker (nur als Beispiel, es könnte auch Irfan sein) mit der Maus gesetzt werden können, und solange im Vordergrund sichtbar bleiben,bis das Programm beendet wird. Das Bildbearbeitungsprogramm muß aber mit der Maus noch bedienbar bleiben. Die Markierungen sollen nicht Bestandteil des bearbeiten Bildes werden, sondern nur an einer bestimmten Stelle des Desktops (Windowsbildschirm) im Vordergrund bleiben. Zur Not könnte man das Bildbearbeitungsprogramm mit dem bestimmten Bildinhalt unter die Markierung schieben. Ich habe das bisher mit 2 Papierschnipseln erledigt, die ich mit Spucke auf dem Bildschirm angeklebt habe - ist ja kein Zustand.Ich bitte darum,den grundsätzlichen Weg aufzuzeigen, ob hier Sprites ,die Windows API oder Mouseoperationen
notwendig sind.

Re: Markierungspositionierung in Bildbearbeitungsfenster

Verfasst: 04.04.2013 10:06
von dige
Geht vermutlich am einfachsten mit 2 transparenten Fenstern durch die man "durchklicken" kann.
Mir fällt da spontan die WinFX Lib von PureLust ein: http://www.purebasic.fr/english/viewtop ... 12&t=43869

Re: Markierungspositionierung in Bildbearbeitungsfenster

Verfasst: 04.04.2013 11:12
von Danilo
Vielleicht reichen auch schon 2 StickyWindows um die angeklebten Papierschnipsel zu ersetzen.
Diese virtuellen Papierschnipsel kann man dann mit der Maus verschieben.

Code: Alles auswählen

#MarkerSize = 15

Procedure OpenMarker(x,y,color)
    Protected win, canvas
    win = OpenWindow(#PB_Any,x,y,#MarkerSize,#MarkerSize,"Marker",#PB_Window_BorderLess)
    If win
        ;SetWindowColor(win,color)
        
        canvas = CanvasGadget(#PB_Any,0,0,#MarkerSize,#MarkerSize)
        If StartDrawing(CanvasOutput(canvas))
            Box(0,0,#MarkerSize,#MarkerSize,color)
            StopDrawing()
        EndIf
        StickyWindow(win,1)
    EndIf
EndProcedure

OpenMarker(100,100,RGB(255,255,0))
OpenMarker(400,300,RGB(255,255,0))


Repeat
    Event = WaitWindowEvent()
    Select Event
        Case #PB_Event_Gadget
            If EventType() = #PB_EventType_LeftButtonDown
                ReleaseCapture_()
                SendMessage_(WindowID(EventWindow()),#WM_NCLBUTTONDOWN,#HTCAPTION,0)
            ElseIf EventType() = #PB_EventType_RightClick
                CreatePopupMenu(1)
                MenuItem(1,"Exit")
                DisplayPopupMenu(1,WindowID(EventWindow()))
            EndIf
        Case #PB_Event_Menu
            End
        Case #PB_Event_CloseWindow
            End
    EndSelect
ForEver

Re: Markierungspositionierung in Bildbearbeitungsfenster

Verfasst: 05.04.2013 14:09
von Heinz Mendax
Hallo,

vielen Dank an dige und natürlich besonders an Danilo, der das Problem sozusagen so gelöst hat, wie ich das dachte. Ich wußte ja
garnicht wo vorn und hinten ist. Danke nochmal, das sich jemand meiner Frage angenommen hat. Als Anfänger kennt man meist
die Möglichkeiten der Programmiersprache nicht.

Gruss Heinz