Wand!

  • VB6

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Coldpepp.

    Guten Tag Forum!
    Tut mir leid das die Überschrift nicht so passend ist aber mir ist nix anderes eingefallen.

    Ich habe mir das hier >"http://www.vbforums.com/showthread.php?t=388036"< runtergeladen und mir den Code durchgelesen und natürlich ein bissien herumexperimentiert.
    Dan kam ich auf die Idee das kleine Projekt ein bisien zu erweitern!
    Meine Frage ist nun: Wie mache ich bei den 4 Punkten (Polygons) Striche von Punkt(Polygin) zu Punkz(Polygin) hin damit es ähnlich wie eien Wand aussiht?
    Ich finde einfach nicht die stelle wo gezeichnet wird!
    Ich habe nur rausgefunden das es ohne den Timer nicht funktionieren wird!

    Kann mir bitte jemand helfen?

    PS: Der Theard mit dem Downloadlink ist alt deshalb habe ich beschlossen einen neuen zu eröffnen!
    Hallo Coldpepp,
    gezeichnet wird im Timer-Event bei PSet.
    Füge mal diese Zeilen oben zum Code hinzu:

    Visual Basic-Quellcode

    1. Private Type PointAPI
    2. x As Long
    3. y As Long
    4. End Type
    5. Private Declare Function Polygon& Lib "gdi32" (ByVal hdc&, LPPoint As PointAPI, ByVal nCount&)

    Und ändere den Code im Timer-Event so ab:

    Visual Basic-Quellcode

    1. Private Sub Timer1_Timer()
    2. Dim Current_Vertex As Long
    3. Dim Alpha As Single
    4. Dim Beta As Single
    5. Cls
    6. Rotate 0, Angle, 0
    7. Angle = Angle + 1
    8. Angle = Angle Mod 360
    9. Dim Figur(3) As PointAPI
    10. For Current_Vertex = 0 To Number_Of_Vertices - 1
    11. Camera(Current_Vertex).x = Local_Vertex(Current_Vertex).x + Camera_Pos.x
    12. Camera(Current_Vertex).y = Local_Vertex(Current_Vertex).y + Camera_Pos.y
    13. Camera(Current_Vertex).Z = Local_Vertex(Current_Vertex).Z + Camera_Pos.Z
    14. Perspective(Current_Vertex).x = Distance * Camera(Current_Vertex).x / Camera(Current_Vertex).Z
    15. Perspective(Current_Vertex).y = Distance * Camera(Current_Vertex).y * ASPECT_RATIO / Camera(Current_Vertex).Z
    16. Alpha = 0.5 * Viewport_Width - 0.5 'Center X
    17. Beta = 0.5 * Viewport_Height - 0.5 'Center Y
    18. Screen(Current_Vertex).x = Alpha + Alpha * Perspective(Current_Vertex).x
    19. Screen(Current_Vertex).y = Beta - Beta * Perspective(Current_Vertex).y
    20. 'PSet (Screen(Current_Vertex).x, Screen(Current_Vertex).y)
    21. With Figur(Choose(1 + Current_Vertex, 0, 1, 3, 2))
    22. .x = Screen(Current_Vertex).x
    23. .y = Screen(Current_Vertex).y
    24. End With
    25. Next Current_Vertex
    26. With Me
    27. .DrawWidth = 1
    28. .FillStyle = vbFSSolid
    29. .FillColor = vbYellow
    30. Call Polygon(.hdc, Figur(0), 4)
    31. End With
    32. End Sub
    Gruss,

    Neptun
    Danke sehr aber nun zeigt er ein Fehler an
    User-defined type not defined und weisst auf die zeile hin

    Private Declare Function Polygon& Lib "gdi32" (ByVal hdc&, LPPoint As PointAPI, ByVal nCount&)

    das hab ich aber geklärt es lag am PointAPI ich hab es anders genannt bei dir nach dem korrigieren passiert garnix die form bleibt leer!
    woran könte das liegen?

    könte ich dieses PSet auch anders benutzen?
    also in einem anderen projekt?
    wie wendet man es an?


    EDIT:
    why ist eigentlich ein ' vor der zeile
    PSet (Screen(Current_Vertex).x, Screen(Current_Vertex).y)


    wen ich das ' wegmache gehts übrigens auch nicht ^^

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Coldpepp“ ()

    Vielen Dank Neptun!!!
    Das einzige Problem dabei ist jetzt das du es gemacht hast nicht ich!!! :D
    Ich vergleiche die Codes jetzt und versuche draus zu lernen!
    Schönen Tag noch!!!

    übrigens weiss ich jetzt auch was ich falsch gemacht hab
    ich hab anstatt
    Private Type PointAPI
    x As Long
    y As Long
    End Type

    dazuzukopieren einfach weggelassen weil ich dachet das alte reicht aus