Sechsecke und ähnliche Merkürdigkeiten

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von volcano.

    Sechsecke und ähnliche Merkürdigkeiten

    Hallo,

    ich möchte ein kleines Spiel erstellen, dass eine Fläche aus Sechsecken als Grundlage hat. Man könnte jetzt einfach ein paar PictureBoxen nebeneinander basteln, und es würde prima aussehen.



    Allerdings soll man die Sechsecke auch anklicken können, und dann würde es mit den PictureBoxen zu Überschneidungen kommen, weil diese nun einmal rechteckig sind:



    Gibt es da einen Weg?
    Ehm ich glaube (vermutung)
    Du kannst irgendwie (ich weiß grad nicht wie)
    Mit System.Drawing ein Sechseck zeichnen und dies dann auch anklicken lassen (ich glaube dass geht wenn du es als Graphics machst falls du verstehst was ich meine)
    Hi
    Naja ich würd das ganze anders angehen.

    VB.NET-Quellcode

    1. Public Shared Function GetMeasuredPolygon(ByVal bounds As Rectangle, ByVal vertexCount As Integer, ByVal rotationAngle As Single) As PointF()
    2. Dim p(vertexCount - 1) As PointF
    3. Dim rotRad As Double = CDbl(Math.PI / 180 * rotationAngle - Math.PI / 2)
    4. For i As Integer = 0 To vertexCount - 1
    5. p(i) = New PointF(CSng(Math.Cos(Math.PI * 2 / vertexCount * i + rotRad) * bounds.Width / 2 + bounds.Width / 2 + bounds.X), CSng(Math.Sin(Math.PI * 2 / vertexCount * i + rotRad) * bounds.Height / 2 + bounds.Height / 2 + bounds.Y))
    6. Next
    7. Return p
    8. End Function


    Hab den Code mal schnell zusammengeschrieben.
    Wenn du das ganze jetzt noch mit DrawPolygon bzw. FillPolygon zeichnest, hast du ein Polygon gezeichnet. Abfragen, ob ein bestimmter Punkt innerhalb vom Polygon liegt, kannst du z.B. über einen GraphicsPath.
    Die Parameter sind übrigens so:
    bounds: Rechteck, in dem das Polygon liegen soll
    vertexCount: Anzahl der Eckpunkte
    rotationAngle: gibt an, um wie viel Grad das Polygon gedreht werden soll. Standardmäßig ist die Ecke oben (standarddrehung: -pi/2)

    Gruß
    ~blaze~

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „~blaze~“ () aus folgendem Grund: Kleine Unstimmigkeit innerhalb des Codes behoben. (Point vollständig in PointF übertragen)

    Ahja, werd ich alles mal durchprobieren. Danke!

    Eins noch an unseren oberschlauen Googler: Meinst du nicht, dass ich das nicht schon probiert habe? (Bei "vb05 Sechsecke malen" kommen übrigens Kinderzimmermöbel und Chemieforen.)
    Ich bin nicht blöd! :(