Zeichnen von Rechteck: Problem

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von miko1204.

    Zeichnen von Rechteck: Problem

    Hi,
    ich möchte ein benutzerdefiniertes Steuerelement machen,
    welches ausenrum ein Rechteck hat,
    das eine Breite von 10 px oder ka, was hat.
    Also wie es aussehen soll: siehe Anhang.
    Bisher habe ich folgendes:

    VB.NET-Quellcode

    1. Private Sub UserControl1_Load(ByVal sender As System.Object, ByVal e As PaintEventArgs) Handles MyBase.Paint
    2. e.Graphics.PageScale = 13
    3. e.Graphics.DrawRectangle(Pens.Black, 0, 0, Size.Width, Size.Height )
    4. End Sub

    Wie es mit dem Code aussieht: siehe Anhang 2
    Kann mir jemand sagen, wie ich das machen muss?
    Danke
    Bilder
    • Bild1.png

      3,23 kB, 612×500, 130 mal angesehen
    • Aufzeichnen.JPG

      21 kB, 583×480, 119 mal angesehen
    Also so dann:

    VB.NET-Quellcode

    1. Private Sub UserControl1_Load(ByVal sender As System.Object, ByVal e As PaintEventArgs) Handles MyBase.Paint
    2. e.Graphics.PageScale = 13
    3. e.Graphics.DrawRectangle(Pens.Black, 0, 0, Size.Width - e.graphics.pagescale, Size.Height - e.graphics.pagescale)
    4. End Sub

    Oder anders?
    Also ich habs jetzt so probiert:

    VB.NET-Quellcode

    1. Private Sub UserControl1_Load(ByVal sender As System.Object, ByVal e As PaintEventArgs) Handles MyBase.Paint
    2. e.Graphics.PageScale = 13
    3. e.Graphics.DrawRectangle(Pens.Black, 0, 0, Size.Width - e.graphics.pagescale, Size.Height - e.graphics.pagescale)
    4. End Sub

    Hat nicht funktioniert.
    Kannst du mir sagen, was ich noch ändern muss?
    Danke
    hallo superhans

    versuchs mal so (Nicht vergessen Formborder auf NONE stellen)

    VB.NET-Quellcode

    1. Dim x As Integer = 0
    2. Dim y As Integer = 0
    3. Dim w As Integer = Me.Size.Width / 13
    4. Dim h As Integer = Me.Size.Height / 13
    5. e.Graphics.PageScale = 13
    6. e.Graphics.DrawRectangle(Pens.Black, x, y, w, h)


    aber ich persoehnlich wuerde es anders machen was auch prima funktioniert

    erstmal Formborder auf NONE stellen und dann folgenden Code:

    VB.NET-Quellcode

    1. Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
    2. Dim x As Integer = 0
    3. Dim y As Integer = 0
    4. Dim w As Integer = Me.Size.Width
    5. Dim h As Integer = Me.Size.Height
    6. Dim x2 As Integer = x + 15
    7. Dim y2 As Integer = y + 15
    8. Dim w2 As Integer = Me.Size.Width - (x2 * 2)
    9. Dim h2 As Integer = Me.Size.Height - (y2 * 2)
    10. e.Graphics.FillRectangle(Brushes.SteelBlue, x, y, w, h)
    11. e.Graphics.FillRectangle(Brushes.White, x2, y2, w2, h2)
    12. End Sub


    und ich krieg folgendes (siehe Bild)

    Gr :)

    EDIT: Kleine Erklearung zu Pagescale normalerweise ist Pagescale 1:1 (1 zu 1) also 100% zu 100%
    wenn man dann Pagescal 2 nimmt heist es 2:1 also (2 zu 1) oder auch 200% zu 100%
    wenn die Form 300 auf 300 gross ist und man nimt dann Pagescale 13 heisst es du versuchst ein Quadrat mit das 13 fache von 300 auf 300 in ein Quadrat mit 300 auf 300 rein zu tun.
    Nur so ne Frage wieso eigentlich Pagescale benutzten? Kann man nicht die Dicke des Stiftes einstellen??


    Edit by Lupus: Rot ist für Mods und Admin reserviert!
    Bilder
    • quad.JPG

      4,26 kB, 292×266, 142 mal angesehen
    Schäm dich nicht "Zu fragen", schäm dich "Nicht zu wissen". ?(

    Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von „Lupus“ ()