Erkennbaren Markierungsrahmen zeichnen

22/04/2009 - 19:04 von Frank Hess | Report spam
Hi,
ich habe in einer Picturebox einen buntes Bild. Nun muss ich eine
bestimmte Stelle durch einen Markierungsrahmen hervorheben.
Frage nun: Wie zeichne ich den Markierungsrahmen damit er möglichst gut
erkennbar ist, er darf sich ja mit der Hintergrundfarbe nicht
überschneiden. Leider gibt es ja wohl den XOR zeichenmodus nicht in NET.
Ist gibt glaub nur einen XOR Modi der mit Bildschirmkoordinatensystem
arbeitet, das ist auch nicht so das wahre.
Kann man nicht irgendwie einen gestrichelten rechteckigen Rahmen
zeichnen der aus zwei Farben besteht. Wenn ja, wie?


Mit besten Grüßen
Frank
 

Lesen sie die antworten

#1 Johannes Brandstätter
22/04/2009 - 19:40 | Warnen spam
Frank Hess schrieb:
Hi,
ich habe in einer Picturebox einen buntes Bild. Nun muss ich eine
bestimmte Stelle durch einen Markierungsrahmen hervorheben.
Frage nun: Wie zeichne ich den Markierungsrahmen damit er möglichst gut
erkennbar ist, er darf sich ja mit der Hintergrundfarbe nicht
überschneiden. Leider gibt es ja wohl den XOR zeichenmodus nicht in NET.
Ist gibt glaub nur einen XOR Modi der mit Bildschirmkoordinatensystem
arbeitet, das ist auch nicht so das wahre.
Kann man nicht irgendwie einen gestrichelten rechteckigen Rahmen
zeichnen der aus zwei Farben besteht. Wenn ja, wie?



Hallo

Mit der Klasse ControlPaint kannst du einen solchen Rahmen aufziehen.

##Code##
Private startPt, endpt As Point

Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e
As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
startPt = PictureBox1.PointToScreen(e.Location)
End If
End Sub

Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e
As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove

If e.Button = Windows.Forms.MouseButtons.Left Then
If endpt = Nothing Then
endpt = PictureBox1.PointToScreen(e.Location)
End If
ControlPaint.DrawReversibleFrame(New Rectangle(startPt.X,
startPt.Y, endpt.X - startPt.X, endpt.Y - startPt.Y), Color.Orange,
FrameStyle.Dashed)
endpt = PictureBox1.PointToScreen(e.Location)
ControlPaint.DrawReversibleFrame(New Rectangle(startPt.X,
startPt.Y, endpt.X - startPt.X, endpt.Y - startPt.Y), Color.Orange,
FrameStyle.Dashed)
End If
End Sub

##Ende##


cu Hannes

Ähnliche fragen