Zeichnen in VB.net

mich4el

Grünschnabel
Hallo,

ich möchte gerne in einer Form einen Kreis Zeichnen der im Vordergrund ist, also auch vor sämtlichen Controls wie z.B Labels, buttons ... usw.

Dim g As Graphics
Dim p As Pen
Dim r As Rectangle

g = Me
p = New Pen(System.Drawing.Color.Green, 5)
r = New Rectangle(50, 50, 100, 100)
g.DrawEllipse(p, r)

so zeichnet er mir auch einen Kreis nur liegt dieser immer im hintergrund.

gibt es da ne andere möglichkeit?
 

Nico Graichen

Erfahrenes Mitglied
Hi

Wo führst du denn den Code aus? Im OnPaint?
Ggf musst auch auf die Controls BringToFront aufrufen. Aber es hängt auch davon ab, wo und wann du zeichnest
 

mich4el

Grünschnabel
ich habe ne normale form wo labels, textboxen usw. drauf sind.
nun will ich testen welche controls ich schon alles in die datenbank geschrieben habe und alle die nicht sind, da soll ein roter punkte daneben gemalt werden. nur habe ich das problem wenn daneben direkt ein anderes control ist wird es hinter das control gemalt und ich sehe den punkt nicht.
 

Nico Graichen

Erfahrenes Mitglied
Hi

Sorry, das hatte ich oben überlesen.
Bei Labels genügt es, die Hintergrundfarbe auf Transparent zu setzen.
Bei den meisten anderen Controls jedoch, wirst du auf diesen Zeichnen müssen. Ich hab ein bisschen probiert, jedoch nichts gefunden, wie du das umgehen könntest
 

PhoenixLoe

Erfahrenes Mitglied
Eine Möglichkeit wäre es, eine zweite Form zu erstellen, deren FormBorderStyle auf None und TransparencyKey auf die Hintergrundfarbe der Form festgelegt wird. Dadurch wird diese Form unsichtbar. Per TopMost-Eigenschaft bleibt diese Form immer im Vordergrund. Im Paint-Ereignis können nun jegliche Grafikoperationen ausgeführt werden.

Allerdings muss die Position von lokalen auf globale Koordinaten umgerechnet werden.

Gruß
PhoenixLoe