RECT über eine PictureBox legen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    RECT über eine PictureBox legen

    Hallo,
    Ich versuche gerade eine Viereck über eine PictureBox zu legen, was mir auch gelingt:

    VB.NET-Quellcode

    1. Curs = PictureBox1.PointToClient(Cursor.Position)
    2. x2 = Curs.X / 0.5 ^ (Zoom / 10)
    3. y2 = Curs.Y / 0.5 ^ (Zoom / 10)
    4. Rx2 = Curs.X
    5. Ry2 = Curs.Y
    6. G = PictureBox1.CreateGraphics
    7. Dim brshBG As Brush = New SolidBrush(Color.FromArgb(72, Color.White))
    8. G.FillRectangle(brshBG, Rx1, Ry1, Rx2 - Rx1, Ry2 - Ry1)
    9. G.DrawRectangle(Pens.Red, Rx1, Ry1, Rx2 - Rx1, Ry2 - Ry1)
    10. G.FillRectangle(brshBG, Rx1, Ry1, Rx2 - Rx1, Ry2 - Ry1)


    Ich habe auch eine Zoom Funktion aber jedoch verschwindet das Rechteck/RECT wenn ich das bild in dem Panel bewegen oder ich das Bild Herranzoome, also immer wenn ich etwas mit dem bild mache verschwinden die Rechtecke. Wie kann ich also die rechtecke immer dabehalten, das sie nicht mehr verschwinden.
    MfG Kevin :)
    War eig. doch ganz einfach.. Nur eine Schleife :D

    VB.NET-Quellcode

    1. Dim brshBG As Brush = New SolidBrush(Color.FromArgb(1, Color.White)) Dim z As String Dim x11 As Array
    2. For i = 0 To (LBNumber - 1) Step 1 z = ListView1.Items(i).SubItems(1).Text x11 = Split(z, ",", 4)
    3. G = PictureBox1.CreateGraphics
    4. R = New Rectangle(x11(0) * 0.5 ^ (Zoom / 10), x11(1) * 0.5 ^ (Zoom / 10), (x11(2) - x11(0)) * 0.5 ^ (Zoom / 10), (x11(3) - x11(1)) * 0.5 ^ (Zoom / 10)) '(Rx1, Ry1, Rx2 - Rx1, Ry2 - Ry1)
    5. G.FillRectangle(brshBG, R) G.DrawRectangle(Pens.Red, R) G.FillRectangle(brshBG, R) Next
    Suboptimal.
    Du musst im Paint-Event der PictureBox malen, sonst ist das Bild weg, wenn Du ein Notepad oder so darüber bewegst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!