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
#include <GuiConstantsEx.au3>
#include <GDIPlus.au3>
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)
$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
$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
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()
; Zeichnet eine Linie
_GDIPlus_Startup()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hGUI)
$hPen = _GDIPlus_PenCreate()
_GDIPlus_GraphicsDrawLine ($hGraphic, $x, $xachse,1000, $xachse, $hPen)
do
while 1
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])
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
EndFunc ;==>_Main
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]while (1)
Sleep(50)
WEnd
Func terminate()
_GDIPlus_Shutdown()
Exit
EndFunc