Größe einer GDI Grafik ändern

  • Hallo :)

    Ich bin grad dabei, ein Dreiecksignal per GDIPlus zu visualisieren.
    Dabei wird die Frequenz nach jeder Periode erhöht.
    Leider braucht das Ganze ziiiiieeeemlich viel Platz und nen Bildschirm mit einer Auflösung von 10000x700 habe ich leider nicht :)
    Deshalb mal meine Frage: Ist es möglich, die komplette Grafik auf einen Bildschirm zu bringen?

    Hier der Code, um einen Eindruck zu gewinnen... beenden mit ESC, aber das könnt ihr ja sehen :)

    Spoiler anzeigen
    [autoit]


    #include <GuiConstantsEx.au3>
    #include <GDIPlus.au3>

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

    HotKeySet("{ESC}","terminate")

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

    dim $delay_array[98] ;// Hier werden die einzelnen Delays gespeichert
    $frequenz = 200
    $startfrequenz = 300
    $pos_Amp = 127
    $neg_Amp = -127
    $file = FileOpen(@DesktopDir&'\x.txt', 2)

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

    $i = 0;
    for $i= 0 to 97 step 1; // Frequenzdelays ausrechnen
    $delay_array[$i] = (round((((1/$frequenz)/4)/$pos_Amp)*(10^7),2))/10; // Einzelner,gerundeter Zeitintervall in Sekunden auf 4 stellen genau
    $frequenz = $frequenz + 100; // Erhöhen der Frequenz
    ;FileWrite($file,'Frequenz: ' & $frequenz & ' Delay: ' &$delay_array[$i]&@crlf)
    next

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

    $frequenz = $startfrequenz

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

    FileClose($file); // Schließen

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

    $xachse = 300
    $i = $xachse-127
    $x = 0
    $j = 0 ; frequ variable

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

    Opt('MustDeclareVars', 1)

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

    _Main()

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

    Func _Main()

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

    Local $hGUI, $hGraphic, $hPen

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

    ; Erstellt eine GUI
    $hGUI = GUICreate("Frequenzmodulation", 1000, 600)
    GUISetState()

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

    ; Zeichnet eine Linie
    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hGUI)
    $hPen = _GDIPlus_PenCreate()

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

    _GDIPlus_GraphicsDrawLine ($hGraphic, $x, $xachse,1000, $xachse, $hPen)
    do
    while 1

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

    while($i < ($xachse+$pos_Amp))

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

    _GDIPlus_GraphicsDrawLine ($hGraphic, $x-1, $i-1,$x, $i, $hPen)
    $x = $x + 1
    $i = $i + 1
    sleep($delay_array[$j])

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

    wend

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

    while($i > ($xachse-$pos_Amp))
    _GDIPlus_GraphicsDrawLine ($hGraphic, $x-1, $i-1,$x, $i, $hPen)
    $x = $x + 1
    $i = $i - 1
    sleep($delay_array[$j])
    wend
    $j = $j+1
    WEnd
    Until $j= 97

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

    EndFunc ;==>_Main

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

    while (1)
    Sleep(50)
    WEnd

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

    Func terminate()
    _GDIPlus_Shutdown()
    Exit
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von Dönn3y (9. November 2010 um 16:35)