• Hallo, ich hab vor einiger Zeit mal ein Skript geschrieben, indem man einen Tisch nach links oder nach rechts verschieben kann, und sich somit auch die Perspektiven zum Tisch ändert.
    Jetzt wollte ich das Skript mal hier zeigen:

    Spoiler anzeigen
    [autoit]


    #include <GDIPlus.au3>
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $GUIWidth = 700
    Global $GUIHeight = 500
    Global $TischLinksiX1 = 230
    Global $TischLinksiY1 = $GUIHeight / 4
    Global $TischLinksiX2 = 200
    Global $TischLinksiY2 = 300

    [/autoit] [autoit][/autoit] [autoit]

    Global $TischRechtsiX1 = 470
    Global $TischRechtsiY1 = $GUIHeight / 4
    Global $TischRechtsiX2 = 500
    Global $TischRechtsiY2 = 300

    [/autoit] [autoit][/autoit] [autoit]

    Global $TischBeinLinksVorneRechts = $TischLinksiX2 + 49
    Global $TischBeinLinksVorneLinks = $TischLinksiX2 + 22
    Global $TischBeinRechtsVorneLinks = $TischRechtsiX2 - 48
    Global $TischBeinRechtsVorneRechts = $TischRechtsiX2 - 21
    Global $TischBeinLinksHintenLinks = $TischLinksiX1 + 14
    Global $TischBeinLinksHintenLinksHinten = $TischLinksiX1 + 21
    Global $TischBeinRechtsHintenRechtsHinten = $TischRechtsiX1 - 21

    [/autoit] [autoit][/autoit] [autoit]

    Global $TischLinieRunterHintenLinks = $TischLinksiY1 + 30
    Global $TischLinieRunterVorneLinks = $TischLinksiY2 + (30 * 1.25)
    Global $TischLinieRunterHintenRechts = $TischRechtsiY1 + 30
    Global $TischLinieRunterVorneRechts = $TischRechtsiY2 + (30 * 1.25)

    [/autoit] [autoit][/autoit] [autoit]

    Global $TischBeinHintenHeight = $TischLinksiY1 + 200

    [/autoit] [autoit][/autoit] [autoit]

    Global $TischLinksPunkte[4][2]
    Global $TischRechtsPunkte[4][2]
    Global $TischLinksPunkteUnten[4][2]
    Global $TischRechtsPunkteUnten[4][2]
    Global $PlatteFuellPunkte[5][2]
    Global $PlatteLinksFuellPunkte[5][2]
    Global $PlatteVorneFuellPunkte[5][2]
    Global $PlatteRechtsFuellPunkte[5][2]

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    $GUI = GUICreate("3D Beispiel", $GUIWidth, $GUIHeight, -1, -1)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    $GDIPlusGUI = _GDIPlus_GraphicsCreateFromHWND($GUI)
    $Bitmap = _GDIPlus_BitmapCreateFromGraphics($GUIWidth, $GUIHeight, $GDIPlusGUI)
    $Buffer = _GDIPlus_ImageGetGraphicsContext($Bitmap)
    _GDIPlus_GraphicsSetSmoothingMode($Buffer, 2)
    _GDIPlus_GraphicsClear($Buffer, 0xFFFFFFFF)
    $PenWidth2 = _GDIPlus_PenCreate(0xFF000000, 2, 2)
    $PenWidth3 = _GDIPlus_PenCreate(0xFF000000, 3, 2)
    $BrushWhite = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)

    [/autoit] [autoit][/autoit] [autoit]

    GUIRegisterMsg($WM_PAINT, "_WM_PAINT")

    [/autoit] [autoit][/autoit] [autoit]

    _Draw()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    _Exit()
    Case $GUI_EVENT_RESTORE
    _WM_PAINT()
    EndSwitch
    If _IsPressed("25") Then
    $TischLinksiX1 -= 1.5
    $TischLinksiX2 -= 2.5
    $TischRechtsiX1 -= 1.5
    $TischRechtsiX2 -= 2.5
    $TischBeinLinksVorneLinks -= 2.4
    $TischBeinLinksVorneRechts -= 2.4
    $TischBeinRechtsVorneLinks -= 2.4
    $TischBeinRechtsVorneRechts -= 2.4
    $TischBeinLinksHintenLinks -= 2.4
    $TischBeinLinksHintenLinksHinten -= 1.45
    $TischBeinRechtsHintenRechtsHinten -= 1.45
    _Draw()
    EndIf
    If _IsPressed("27") Then
    $TischLinksiX1 += 1.5
    $TischLinksiX2 += 2.5
    $TischRechtsiX1 += 1.5
    $TischRechtsiX2 += 2.5
    $TischBeinLinksVorneLinks += 2.4
    $TischBeinLinksVorneRechts += 2.4
    $TischBeinRechtsVorneLinks += 2.4
    $TischBeinRechtsVorneRechts += 2.4
    $TischBeinLinksHintenLinks += 2.4
    $TischBeinLinksHintenLinksHinten += 1.45
    $TischBeinRechtsHintenRechtsHinten += 1.45
    _Draw()
    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Draw()
    _GDIPlus_GraphicsClear($Buffer, 0xFFFFFFFF)

    [/autoit] [autoit][/autoit] [autoit]

    $TischLinksPunkte[0][0] = 3
    $TischLinksPunkte[1][0] = $TischLinksiX1
    $TischLinksPunkte[1][1] = $TischLinksiY1
    $TischLinksPunkte[2][0] = $TischLinksiX2 + 1
    $TischLinksPunkte[2][1] = $TischLinksiY2
    $TischLinksPunkte[3][0] = $TischLinksiX2 - 1
    $TischLinksPunkte[3][1] = $TischLinksiY2

    [/autoit] [autoit][/autoit] [autoit]

    $TischRechtsPunkte[0][0] = 3
    $TischRechtsPunkte[1][0] = $TischRechtsiX1
    $TischRechtsPunkte[1][1] = $TischRechtsiY1
    $TischRechtsPunkte[2][0] = $TischRechtsiX2 + 1
    $TischRechtsPunkte[2][1] = $TischRechtsiY2
    $TischRechtsPunkte[3][0] = $TischRechtsiX2 - 1
    $TischRechtsPunkte[3][1] = $TischRechtsiY2

    [/autoit] [autoit][/autoit] [autoit]

    $TischLinksPunkteUnten[0][0] = 3
    $TischLinksPunkteUnten[1][0] = $TischLinksPunkte[1][0]
    $TischLinksPunkteUnten[1][1] = $TischLinieRunterHintenLinks
    $TischLinksPunkteUnten[2][0] = $TischLinksPunkte[2][0]
    $TischLinksPunkteUnten[2][1] = $TischLinieRunterVorneLinks
    $TischLinksPunkteUnten[3][0] = $TischLinksPunkte[3][0]
    $TischLinksPunkteUnten[3][1] = $TischLinieRunterVorneLinks

    [/autoit] [autoit][/autoit] [autoit]

    $TischRechtsPunkteUnten[0][0] = 3
    $TischRechtsPunkteUnten[1][0] = $TischRechtsPunkte[1][0]
    $TischRechtsPunkteUnten[1][1] = $TischLinieRunterHintenRechts
    $TischRechtsPunkteUnten[2][0] = $TischRechtsPunkte[2][0]
    $TischRechtsPunkteUnten[2][1] = $TischLinieRunterVorneRechts
    $TischRechtsPunkteUnten[3][0] = $TischRechtsPunkte[3][0]
    $TischRechtsPunkteUnten[3][1] = $TischLinieRunterVorneRechts

    [/autoit] [autoit][/autoit] [autoit]

    $PlatteFuellPunkte[0][0] = 4
    $PlatteFuellPunkte[1][0] = $TischLinksiX1
    $PlatteFuellPunkte[1][1] = $TischLinksiY1
    $PlatteFuellPunkte[2][0] = $TischLinksiX2
    $PlatteFuellPunkte[2][1] = $TischLinksiY2
    $PlatteFuellPunkte[3][0] = $TischRechtsiX2
    $PlatteFuellPunkte[3][1] = $TischRechtsiY2
    $PlatteFuellPunkte[4][0] = $TischRechtsiX1
    $PlatteFuellPunkte[4][1] = $TischRechtsiY1

    [/autoit] [autoit][/autoit] [autoit]

    $PlatteLinksFuellPunkte[0][0] = 4
    $PlatteLinksFuellPunkte[1][0] = $TischLinksiX1
    $PlatteLinksFuellPunkte[1][1] = $TischLinksiY1
    $PlatteLinksFuellPunkte[2][0] = $TischLinksiX1
    $PlatteLinksFuellPunkte[2][1] = $TischLinieRunterHintenLinks
    $PlatteLinksFuellPunkte[3][0] = $TischLinksiX2
    $PlatteLinksFuellPunkte[3][1] = $TischLinieRunterVorneLinks
    $PlatteLinksFuellPunkte[4][0] = $TischLinksiX2
    $PlatteLinksFuellPunkte[4][1] = $TischLinksiY2

    [/autoit] [autoit][/autoit] [autoit]

    $PlatteVorneFuellPunkte[0][0] = 4
    $PlatteVorneFuellPunkte[1][0] = $TischLinksiX2
    $PlatteVorneFuellPunkte[1][1] = $TischLinksiY2
    $PlatteVorneFuellPunkte[2][0] = $TischLinksiX2
    $PlatteVorneFuellPunkte[2][1] = $TischLinieRunterVorneLinks
    $PlatteVorneFuellPunkte[3][0] = $TischRechtsiX2
    $PlatteVorneFuellPunkte[3][1] = $TischLinieRunterVorneRechts
    $PlatteVorneFuellPunkte[4][0] = $TischRechtsiX2
    $PlatteVorneFuellPunkte[4][1] = $TischRechtsiY2

    [/autoit] [autoit][/autoit] [autoit]

    $PlatteRechtsFuellPunkte[0][0] = 4
    $PlatteRechtsFuellPunkte[1][0] = $TischRechtsiX1
    $PlatteRechtsFuellPunkte[1][1] = $TischRechtsiY1
    $PlatteRechtsFuellPunkte[2][0] = $TischRechtsiX1
    $PlatteRechtsFuellPunkte[2][1] = $TischLinieRunterHintenRechts
    $PlatteRechtsFuellPunkte[3][0] = $TischRechtsiX2
    $PlatteRechtsFuellPunkte[3][1] = $TischLinieRunterVorneRechts
    $PlatteRechtsFuellPunkte[4][0] = $TischRechtsiX2
    $PlatteRechtsFuellPunkte[4][1] = $TischRechtsiY2

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDrawLine($Buffer, $TischLinksiX1 + 20, $TischLinksiY1, $TischLinksiX1 + 20, $TischBeinHintenHeight, $PenWidth2)
    _GDIPlus_GraphicsDrawLine($Buffer, $TischLinksiX1 + 20, $TischBeinHintenHeight, $TischLinksiX1 + 45, $TischBeinHintenHeight, $PenWidth2)
    _GDIPlus_GraphicsDrawLine($Buffer, $TischLinksiX1 + 45, $TischLinksiY1, $TischLinksiX1 + 45, $TischBeinHintenHeight, $PenWidth2)
    _GDIPlus_GraphicsDrawLine($Buffer, $TischBeinLinksHintenLinksHinten, $TischLinksiY1, $TischBeinLinksHintenLinksHinten, $TischLinksiY1 + 185, $PenWidth2)
    _GDIPlus_GraphicsDrawLine($Buffer, $TischBeinLinksHintenLinksHinten, $TischLinksiY1 + 184, $TischLinksiX1 + 20, $TischBeinHintenHeight, $PenWidth2)
    _GDIPlus_GraphicsDrawLine($Buffer, $TischBeinLinksHintenLinks, $TischLinksiY1, $TischBeinLinksHintenLinks, $TischLinksiY1, $PenWidth2)
    _GDIPlus_GraphicsDrawLine($Buffer, $TischRechtsiX1 - 20, $TischRechtsiY1, $TischRechtsiX1 - 20, $TischBeinHintenHeight, $PenWidth2)
    _GDIPlus_GraphicsDrawLine($Buffer, $TischRechtsiX1 - 45, $TischRechtsiY1, $TischRechtsiX1 - 45, $TischBeinHintenHeight, $PenWidth2)
    _GDIPlus_GraphicsDrawLine($Buffer, $TischRechtsiX1 - 20, $TischBeinHintenHeight, $TischRechtsiX1 - 45, $TischBeinHintenHeight, $PenWidth2)
    _GDIPlus_GraphicsDrawLine($Buffer, $TischBeinRechtsHintenRechtsHinten, $TischRechtsiY1, $TischBeinRechtsHintenRechtsHinten, $TischRechtsiY1 + 185, $PenWidth2)
    _GDIPlus_GraphicsDrawLine($Buffer, $TischBeinRechtsHintenRechtsHinten, $TischRechtsiY1 + 184, $TischRechtsiX1 - 20, $TischBeinHintenHeight, $PenWidth2)
    _GDIPlus_GraphicsFillPolygon($Buffer, $PlatteRechtsFuellPunkte, $BrushWhite)
    _GDIPlus_GraphicsFillPolygon($Buffer, $PlatteVorneFuellPunkte, $BrushWhite)
    _GDIPlus_GraphicsFillPolygon($Buffer, $PlatteFuellPunkte, $BrushWhite)
    _GDIPlus_GraphicsFillPolygon($Buffer, $PlatteLinksFuellPunkte, $BrushWhite)
    _GDIPlus_GraphicsDrawPolygon($Buffer, $TischLinksPunkte, $PenWidth2)
    _GDIPlus_GraphicsDrawPolygon($Buffer, $TischRechtsPunkte, $PenWidth2)
    If $TischLinksiX2 >= $TischLinksiX1 Then _GDIPlus_GraphicsDrawPolygon($Buffer, $TischLinksPunkteUnten, $PenWidth2)
    If $TischRechtsiX2 <= $TischRechtsiX1 Then _GDIPlus_GraphicsDrawPolygon($Buffer, $TischRechtsPunkteUnten, $PenWidth2)
    _GDIPlus_GraphicsDrawLine($Buffer, $TischLinksiX1 + 1, $TischLinksiY1, $TischRechtsiX1 - 1, $TischRechtsiY1, 0)
    _GDIPlus_GraphicsDrawLine($Buffer, $TischLinksiX2, $TischLinksiY2, $TischRechtsiX2, $TischRechtsiY2, $PenWidth3)
    If $TischLinksiX2 >= $TischLinksiX1 Then _GDIPlus_GraphicsDrawLine($Buffer, $TischLinksiX1, $TischLinksiY1, $TischLinksiX1, $TischLinieRunterHintenLinks, $PenWidth2)
    _GDIPlus_GraphicsDrawLine($Buffer, $TischLinksiX2, $TischLinksiY2, $TischLinksiX2, $TischLinieRunterVorneLinks, $PenWidth3)
    If $TischRechtsiX2 <= $TischRechtsiX1 Then _GDIPlus_GraphicsDrawLine($Buffer, $TischRechtsiX1, $TischRechtsiY1, $TischRechtsiX1, $TischLinieRunterHintenRechts, $PenWidth2)
    _GDIPlus_GraphicsDrawLine($Buffer, $TischRechtsiX2, $TischRechtsiY2, $TischRechtsiX2, $TischLinieRunterVorneRechts, $PenWidth3)
    _GDIPlus_GraphicsDrawLine($Buffer, $TischLinksiX2, $TischLinieRunterVorneLinks, $TischRechtsiX2, $TischLinieRunterVorneRechts, $PenWidth3)
    _GDIPlus_GraphicsDrawLine($Buffer, $TischLinksiX2 + 20, $TischLinieRunterVorneLinks, $TischLinksiX2 + 20, $GUIHeight, $PenWidth3)
    _GDIPlus_GraphicsDrawLine($Buffer, $TischLinksiX2 + 50, $TischLinieRunterVorneLinks, $TischLinksiX2 + 50, $GUIHeight, $PenWidth3)
    If $TischLinksiX2 + 20 >= $TischBeinLinksVorneLinks Then _GDIPlus_GraphicsDrawLine($Buffer, $TischBeinLinksVorneLinks, $TischLinieRunterVorneLinks, $TischBeinLinksVorneLinks, $GUIHeight, $PenWidth3)
    If $TischLinksiX2 + 50 <= $TischBeinLinksVorneRechts Then _GDIPlus_GraphicsDrawLine($Buffer, $TischBeinLinksVorneRechts, $TischLinieRunterVorneRechts, $TischBeinLinksVorneRechts, $GUIHeight, $PenWidth3)
    _GDIPlus_GraphicsDrawLine($Buffer, $TischRechtsiX2 - 20, $TischLinieRunterVorneRechts, $TischRechtsiX2 - 20, $GUIHeight, $PenWidth3)
    _GDIPlus_GraphicsDrawLine($Buffer, $TischRechtsiX2 - 50, $TischLinieRunterVorneRechts, $TischRechtsiX2 - 50, $GUIHeight, $PenWidth3)
    If $TischRechtsiX2 - 50 >= $TischBeinRechtsVorneLinks Then _GDIPlus_GraphicsDrawLine($Buffer, $TischBeinRechtsVorneLinks, $TischLinieRunterVorneRechts, $TischBeinRechtsVorneLinks, $GUIHeight, $PenWidth3)
    If $TischRechtsiX2 - 20 <= $TischBeinRechtsVorneRechts Then _GDIPlus_GraphicsDrawLine($Buffer, $TischBeinRechtsVorneRechts, $TischLinieRunterVorneRechts, $TischBeinRechtsVorneRechts, $GUIHeight, $PenWidth3)
    _GDIPlus_GraphicsFillRect($Buffer, 0, 0, $GUIWidth, $TischLinksiY1, $BrushWhite)
    If $TischLinksiX2 >= $TischLinksiX1 Then _GDIPlus_GraphicsFillRect($Buffer, 0, 0, $TischLinksiX1 - 1, $GUIHeight, $BrushWhite)
    If $TischRechtsiX2 <= $TischRechtsiX1 Then _GDIPlus_GraphicsFillRect($Buffer, $TischRechtsiX1 + 1, 0, $GUIWidth, $GUIHeight, $BrushWhite)
    _WM_PAINT()
    EndFunc ;==>_Draw

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    _GDIPlus_BrushDispose($BrushWhite)
    _GDIPlus_PenDispose($PenWidth3)
    _GDIPlus_PenDispose($PenWidth2)
    _GDIPlus_GraphicsDispose($Buffer)
    _GDIPlus_ImageDispose($Bitmap)
    _GDIPlus_GraphicsDispose($GDIPlusGUI)
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>_Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func _WM_PAINT()
    _GDIPlus_GraphicsDrawImageRect($GDIPlusGUI, $Bitmap, 0, 0, $GUIWidth, $GUIHeight)
    EndFunc ;==>_WM_PAINT

    [/autoit]

    Mit den Pfeiltasten <= (nach links) und => (nach rechts) kann man den Tisch verschieben.


    Bitte Feedback geben. :D

  • Danke. :)

    Zu deiner UDF Idee: Es gibt ein OpenGL Plugin (wenn ich das nicht falsch verstanden habe ;) ), mit dem kann man ganz leicht 3D Objekte erstellen. Hier
    Und es gibt ja noch die Irrlicht.au3: Hier

  • Âlso bei mir geht es. Du musst die dll's in den System32 Ordner packen und den alten AdlibRegister Befehl (weiß grad nich wie der heißt) in AdlibRegister umbenennen, dann gehts, und die Beispiele sind echt cool!

  • Danke

    PS.:

    nur so als Hintergrundinfo...

    AdlibEnable hieß der alte

    Weißt du auch wie der alte Befehl für AdlibUnRegister() heißt?
    Weil ich kenn die ganzen alten Befehle nicht .

  • Du kannst das Skript ruhig verwenden, dann musst solltest du das Skript aber etwas deinen Bedürfnissen anpassen.

  • Heute kann ich des aber nich mehr machen, ich muss noch ein Referat vorbereiten auf morgen
    und um 17 Uhr geh ich weg.

    Zitat

    Kann man auch die Farbe des Tische's (Also die Füllung) verändern?

    Ja, man könnte, indem du über all Füllst und den Brush dann färbst.