1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. UEZ

Beiträge von UEZ

  • Auto Ball Spiel

    • UEZ
    • 28. Mai 2009 um 13:43
    Zitat von moritz1243

    @ UEZ hast recht danke für die funktion ;) Aus deinem AutoIteroids Spiel oder?

    Nicht nur :D Ich benutze sie auch z.B. in "Simple Ball Collision Simulation".


    Das Verhaken ist wirklich nicht einfach zu lösen, hab' das auch bei den Kugeln ^^

    UEZ

  • Auto Ball Spiel

    • UEZ
    • 28. Mai 2009 um 10:18

    Ich habe deinen Code schnell überflogen und mir ist folgendes aufgefallen:

    1) du berechnest $pi/180 immer, obwohl $pi/180 eine Konstante ist
    Vorschlag: Global Const $pi_div_180 = 4 * ATan(1) / 180

    2) auch die Potenz von Zahlen ist langsamer als die Multiplikation, d.h. a^2 = a*a. Kannst ja bei deiner Pythagoras Berechnung berücksichtigen!

    Ich habe mir dafür eine Funktion geschrieben:

    Func Pixel_Distance($x1, $y1, $x2, $y2) ;Pythagoras theorem
    Local $a, $b, $c
    If $x2 = $x1 And $y2 = $y1 Then
    Return 0
    Else
    $a = $y2 - $y1
    $b = $x2 - $x1
    $c = Sqrt($a * $a + $b * $b)
    Return $c
    EndIf
    EndFunc ;==>Pixel_Distance

    Ansonsten Top!

    UEZ

  • Auto Ball Spiel

    • UEZ
    • 27. Mai 2009 um 22:01

    Saubere Arbeit. :thumbup:

    Was mir aufgefallen ist: bei einem Tor sollte sich der Ball auch hinter die Torlinie bewegen!

    Respekt!

    Was war denn die größte Herausforderung?

    Gruß,
    UEZ

  • [SPIEL] AUTOITEROIDS v1.019 (Final): ein Klon des Arcade Klassikers Asteroids von 1979 (Atari) (Stand: 2016-01-14)

    • UEZ
    • 26. Mai 2009 um 22:25
    Zitat von AutoBert

    Hallo UEZ,

    gelungene Umsetzung des Spiels :thumbup: , hat mich sofort 30 Jahre jünger gemacht, hab gedaddelt bis ich ich Ladehemmung hatte (STRG-Taste muss ich mal nachkontrolieren). Weiter so und großes Lob :thumbup: ,

    mfg (Auto)bert

    Ich war so um die 12 Jahre als ich das erste Mal vor der Kiste stand und Asteroids bewunderte - das ist auch schon ca. 25 Jahre her! Man wie die Zeit vergeht... ;(


    Btw, ich glaube ich habe die Explosionsgeräusche vergessen zu aktivieren:

    einfach in der Funktion Func Explosion_Init($ex, $ey) die Zeile If $start_game = 1 Then Explosion_Sound() vor der EndFunc einfügen! SORRY!

    In der nächsten, sehr wahrscheinlich Final Version, werden die Explosionsgeräusche wieder da sein!

    Gruß,
    UEZ

  • [SPIEL] AUTOITEROIDS v1.019 (Final): ein Klon des Arcade Klassikers Asteroids von 1979 (Atari) (Stand: 2016-01-14)

    • UEZ
    • 25. Mai 2009 um 09:40
    Zitat von Gianni

    Hallo UEZ

    Unglaublich, heute ging mir die genau gleiche idee durch den kopf.hab das spiel früher mal für flash / action script programmiert. Dann kamm mir noch ein anderes Spiel (Klassiker) in den sinn, dass ich auch mal programmiert hatte. und zwar ist es arkanoid / breakout..

    vielleicht könnte es eine idee für das nächste spiel sein..??!!

    grüsse

    Ich werde genau deinen Weg gehen, aber nur anders herum: ich werde jetzt mit Flash respektive C/C++ anfangen. Ohne C/C++ kommt man nicht sehr weit :(

    Vielleicht werde ich ja ein Game in Flash erstellen, aber bis dahin ist es noch sehr weit...

    Gruß,
    UEZ

    PS: Ach ja, ich bin auch kein AutoIt Meister :!:

  • [SPIEL] AUTOITEROIDS v1.019 (Final): ein Klon des Arcade Klassikers Asteroids von 1979 (Atari) (Stand: 2016-01-14)

    • UEZ
    • 24. Mai 2009 um 21:34

    Danke für das Feedback ;)

    In der Tat habe ich vergessen zu schreiben, dass mit der Strg (Ctrl) Taste geschissen geschossen werden kann :P - hab's korrigiert.

    Und AUTOITEROIDS ist keine Krankheit :rofl:

    UEZ

    PS: Ich bin kein GDI+ Meister :!:

  • [SPIEL] AUTOITEROIDS v1.019 (Final): ein Klon des Arcade Klassikers Asteroids von 1979 (Atari) (Stand: 2016-01-14)

    • UEZ
    • 24. Mai 2009 um 16:08

    AUTOITEROIDS (Final): ein Clone des Arcade Spielhallen Klassikers Asteroids von 1979 (Atari)

    [Blockierte Grafik: https://www.autoitscript.com/forum/uploads/monthly_05_2009/post-29844-1242504010.png]


    Steuerung:

    • Pfeil nach oben: Schub
    • Pfeil nach links: Drehung nach links
    • Pfeil nach rechts: Drehung nach rechts
    • Strg (Ctrl): Schießen
    • Space Taste: Hypersprung

    Game Play:

    • Spiel fängt mit 3 Asteroiden an
    • alle 10.000 Pukte erhöht sich der Level (u.a. # Asteroiden + 1)
    • alle 30.000 Punkte extra Leben
    • größter Asteroid = 20 Punkte
    • mittlere Asteroid = 50 Punkte
    • kleinster Asteroid = 100 Punkte
    • großes Alien Schiff = 200 Punkte
    • kleines Alien Schiff = 1000 Punkte

    Download:

    • Source Code + Exe Version: v1.019 Build 2012-07-30 (Download weiter unten!)
    • --=> (.7z Archiv kann z.B. mit 7-Zip entpackt werden!)
    • Compilierte Version ohne Quellcode: HIER (v1.019 Build 2012-07-30)

    Credits:

    • Haupt Code: UEZ
    • Bass UDF: BrettF
    • Bass DLL: http://www.un4seen.com/
    • GDI+ Font Lader Code: Yashied
    • Font: ck! [Freaky Fonts]
    • Sound + Sound Code Modifizierung: Spiff59
    • GetKeyboardState code: Eukalyptus

    Zu finden auch hier (inkl. Change Log): http://www.autoitscript.com/forum/index.php?showtopic=95138


    Online zocken: ASTEROIDS (Java Version) :P


    Viel Spaß beim Ballern ^^
    UEZ

    Dateien

    AUTOITEROIDS v1.019 Build 2016-01-14.7z 637,84 kB – 361 Downloads
  • GDI+ Visualization: Analog Meter

    • UEZ
    • 17. März 2009 um 12:54

    Ich hab's rausgefunden. DL Link und Quellcode aktualisiert (1. Post).

    Die Pegelauschläge hängen nun von der Lautstärke ab.

    Gruß,
    UEZ

  • GDI+ Visualization: Analog Meter

    • UEZ
    • 16. März 2009 um 22:04
    Zitat von eukalyptus

    Auch unter Vista gibt es den Stereomix um den Output aufzunehmen:

    Rechtsklick auf das Lautsprechersymbol -> Aufnahmegeräte -> Rechtsklick -> "deaktivierte Geräte anzeigen"
    Dann erscheinen dann alle möglichen Devices, welche man dann aktivieren kann.

    _BASS_RecordInit($bass_dll, -1) der Parameter gibt das Aufnahmegerät an, wird bei UEZ warscheinlich 2 sein...(-1 = Default, wahrscheinlich Mikro)
    Weiß allerdings nocht nicht, wie man automatisch erkennt, welcher der richtige ist...

    lgE

    Ehrlich gesagt habe ich auch nicht weiter geforscht :whistling:

    Bei mir wird leider nicht mehr erkannt als Microphone und LineIn!

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.


    Ich werde versuchen, die Lautstärke mit einzubeziehen, so dass, wenn die Lautstärke leise ist, die Pegel Ausschäge weniger sind. D.h. je lauter desto mehr Pegel Ausschläge.

    Ich habe noch nicht nachgeforscht, ob bass.dll die Lautstärke auslesen kann und ob Vista kompatibel.

    UEZ

  • GDI+ Visualization: Analog Meter

    • UEZ
    • 13. März 2009 um 18:57
    Zitat von Dankeschön

    Darf ich die Visualisierung für meinen Media Player nutzen?
    Nach genauso etwas suche ich schon lange....

    JA! Nur würde ich gerne bei den "Credits" auftauchen. :P

    Hinweis: Bass.au3, Bass.dll und das Bild sind nicht mein geistiges Eigentum :!:

    Bitteschön,
    UEZ

  • GDI+ Visualization: Analog Meter

    • UEZ
    • 13. März 2009 um 16:22
    Zitat von K1773R

    @UEZ
    da haben ma das problem schon! ich hab kA von dem ^^ zudem versteh ich nurn teil des codes

    Hier die Modifikation des Codes:

    Spoiler anzeigen


    ;code by UEZ 2009
    #AutoIt3Wrapper_Run_Obfuscator=y
    #Obfuscator_Parameters=/SO
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Run_After=upx.exe --best "%out%"

    #include <GUIConstantsEx.au3>
    #include <GDIplus.au3>
    #include <WindowsConstants.au3>
    #include "Bass.au3" ;thanks to BrettF

    Opt("GUIOnEventMode", 1)

    _GDIPlus_Startup()
    $bitmap_from_file = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\AIMP_VU.bmp") ;thanks to AIMP2 player ;)
    Global Const $iX = _GDIPlus_ImageGetWidth($bitmap_from_file)
    Global Const $iY = _GDIPlus_ImageGetHeight($bitmap_from_file)

    Global Const $bass_dll = DllOpen(@ScriptDir & "\BASS.dll")
    _BASS_SetConfig($bass_dll, $BASS_CONFIG_REC_BUFFER, 1000)

    _BASS_RecordInit($bass_dll, -1)

    ;thanks to eukalyptus
    $Cnt = 0
    $Name = _BASS_RecordGetInputName($bass_dll, 0)
    While $Name <> ""
    $Input = _BASS_RecordGetInput($bass_dll, $Cnt)
    If BitAND($Input[0], $BASS_INPUT_TYPE_WAVE) Then _BASS_RecordSetInput($bass_dll, $Cnt, $BASS_INPUT_TYPE_WAVE, 1)
    $Cnt += 1
    $Name = _BASS_RecordGetInputName($bass_dll, $Cnt)
    WEnd

    If @OSVersion = "WIN_VISTA" Or @OSVersion = "WIN_2008" Then _BASS_RecordSetInput($bass_dll, 0, $BASS_INPUT_TYPE_WAVE, 1)

    $RecHandle = _BASS_RecordStart($bass_dll, 44100, 2, _WinAPI_MakeLong(0, 10))


    Global Const $width = $iX * 2
    Global Const $height = $iY

    $hwnd = GUICreate("", $width, $height, -1, -1, Default, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
    GUISetOnEvent($GUI_EVENT_CLOSE, "close")
    GUISetState()

    $graphics = _GDIPlus_GraphicsCreateFromHWND($hwnd)
    $bitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $graphics)
    $backbuffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
    _GDIPlus_GraphicsSetSmoothingMode($backbuffer, 4)

    Global Const $pen_size = 2
    $pen = _GDIPlus_PenCreate(0, $pen_size)
    $brush_l = _GDIPlus_BrushCreateSolid()
    $brush_r = _GDIPlus_BrushCreateSolid()
    _GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, 0, 0)
    _GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, $iX, 0)

    Global Const $pi = 3.1415926535897932384626433832795
    Global Const $pi_div_180 = $pi / 180
    Global Const $max_amplitude = 450
    Global Const $min_x = 25
    Global Const $max_x = 160
    Global Const $pointer_ini_point_y = 80 ;less is longer
    Global Const $pointer_start_y = 93
    Global Const $pointer_length = 65
    Global Const $ellipse_size = 8
    Global Const $ellipse_size_half = $ellipse_size / 2
    Global Const $width_div_4 = $width / 4
    Global Const $width_div_2 = $width / 2

    Dim $title[19] = ["º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`", _
    "GDI+ Visualization: Analog Meter", _
    "Credits:", _
    "Main coding by: UEZ 2009", _
    "Bass UDF: BrettF", _
    "Bass Record Function Code: eukalyptus", _
    "Bass DLL: https://autoit.de/www.un4seen.com", _
    "Image: AIMP Player", _
    "Music: ACC:Xess", _
    "For more music visit: ", _
    "http://remix.kwed.org (C64 Remakes / Remixes)", _
    "And of course", _
    "AutoIt developers ;-)", _
    "•*´¯`*•.¸ .. ¥ .. ¸.•*´¯`*•*´¯`*•.¸ .. ¥ .. ¸.•*´¯`*•*´¯`*•.¸ .. ¥ .. ¸.•*´¯`*.¸ .. ¥ .. ¸.•*´¯", _
    "Greetings to: ", _
    "All members from", _
    "www.autoitscript.com / https://autoit.de/www.autoit.de", _
    " ", _
    "Restarting text..."]

    Global $c = 0 ;counter for sleep
    Global $i = 1 ;for character
    Global $j = 0 ;for array
    Global $k = UBound($title) - 1
    Global $s = 150 ;sleep time
    Global $in = True
    Global $effect = Random(1, 2, 1)

    $g = 0x00
    $b = 0x00

    Do
    $levels = _BASS_ChannelGetLevel($bass_dll, $RecHandle)
    $LeftChLvl = _WinAPI_LoWord($levels) * 135 / 0x1500
    $RightChLvl = _WinAPI_HiWord($levels) * 135 / 0x1500

    $l_x2 = $min_x + $max_x * ($LeftChLvl / $max_amplitude)
    If $l_x2 >= $max_x Then $l_x2 = $max_x
    $l_y2 = $pointer_ini_point_y - Sin($l_x2 * $pi_div_180) * $pointer_length

    $r_x2 = $min_x + $max_x * ($RightChLvl / $max_amplitude)
    If $r_x2 >= $max_x Then $r_x2 = $max_x
    $r_y2 = $pointer_ini_point_y - Sin($r_x2 * $pi_div_180) * $pointer_length

    _GDIPlus_PenSetColor($pen, 0xCF111111)
    _GDIPlus_GraphicsDrawLine($backbuffer, $width_div_4 - 1, $pointer_start_y, $l_x2, $l_y2, $pen)
    _GDIPlus_GraphicsDrawLine($backbuffer, $width - $width_div_4 - 1, $pointer_start_y, $width_div_2 + $r_x2, $r_y2, $pen)

    $r = $LeftChLvl * ($LeftChLvl / 0xFF)
    _GDIPlus_BrushSetSolidColor($brush_l, "0xFF" & Hex($r, 2) & Hex($g, 2) & Hex($b, 2))
    _GDIPlus_GraphicsFillEllipse($backbuffer, $width_div_4 - $ellipse_size_half - 1, $pointer_start_y - $ellipse_size_half, $ellipse_size, $ellipse_size, $brush_l)

    $r = $RightChLvl * ($RightChLvl / 0xFF)
    _GDIPlus_BrushSetSolidColor($brush_r, "0xFF" & Hex($r, 2) & Hex($g, 2) & Hex($b, 2))
    _GDIPlus_GraphicsFillEllipse($backbuffer, $width - $width_div_4 - $ellipse_size_half - 1, $pointer_start_y - $ellipse_size_half, $ellipse_size, $ellipse_size, $brush_r)

    _GDIPlus_GraphicsDrawImageRect($graphics, $bitmap, 0, 0, $width, $height)
    _GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, 0, 0)
    _GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, $iX, 0)
    Sleep(25)
    Display_Info()
    Until False

    Func Display_Info()
    If $in Then
    If $i <> StringLen($title[$j]) + 1 Then
    If $effect = 1 Then
    WinSetTitle($hwnd, "", StringLeft($title[$j], $i)) ;effect 1a, 1 by 1
    Else
    WinSetTitle($hwnd, "", StringRight($title[$j], $i)) ;effect 2a, scroll to right
    EndIf
    $i += 1
    Else
    If $c = $s Then
    $i = 1
    $in = False
    $c = 0
    $effect = Random(1, 2, 1)
    Else
    $c += 1
    EndIf
    EndIf
    Else
    If $i <> StringLen($title[$j]) + 1 Then
    If $effect = 1 Then
    WinSetTitle($hwnd, "", StringLeft($title[$j], StringLen($title[$j]) - $i)) ;effect 1b, 1 by 1
    Else
    WinSetTitle($hwnd, "", StringRight($title[$j], StringLen($title[$j]) - $i)) ;effect 2b, scroll to left
    EndIf
    $i += 1
    Else
    $i = 1
    $in = True
    $effect = Random(1, 2, 1)
    If $j = $k Then
    $j = 0
    Else
    $j += 1
    EndIf
    EndIf
    EndIf
    EndFunc ;==>Display_Info

    Func close()
    _BASS_Free($bass_dll)
    DllClose($bass_dll)
    _GDIPlus_PenDispose($pen)
    _GDIPlus_BrushDispose($brush_l)
    _GDIPlus_BrushDispose($brush_r)
    _GDIPlus_BitmapDispose($bitmap)
    _GDIPlus_GraphicsDispose($graphics)
    _GDIPlus_GraphicsDispose($backbuffer)
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>close

    ; #FUNCTION# ====================================================================
    ; Name...........: _GDIPlus_BrushSetSolidColor
    ; Description ...: Set the color of a Solid Brush object
    ; Syntax.........: _GDIPlus_BrushSetSolidColor($hBrush, [$iARGB = 0xFF000000])
    ; Parameters ....: $hBrush - Handle to a Brush object
    ; $iARGB - Alpha, Red, Green and Blue components of brush
    ; Return values .: Success - True
    ; Failure - False
    ; Author ........:
    ; Modified.......: smashly
    ; Remarks .......:
    ; Related .......:
    ; Link ..........; @@MsdnLink@@ GdipSetSolidFillColor
    ; Example .......; Yes
    ; ================================================================================
    Func _GDIPlus_BrushSetSolidColor($hBrush, $iARGB = 0xFF000000)
    Local $aResult
    $aResult = DllCall($ghGDIPDll, "int", "GdipSetSolidFillColor", "hwnd", $hBrush, "int", $iARGB)
    If @error Then Return SetError(@error, @extended, 0)
    Return SetError($aResult[0], 0, $aResult[0] = 0)
    EndFunc ;==>_GDIPlus_BrushSetSolidColor

    Vielen Dank an eukalyptus für den Teil des Codes!

    Achtung: auf Vista funzt das Ganze nicht richtig. Z.B. bekomme ich nur über das Mikrofon die Levels angezeigt. Außerdem kann ich es auf XP momentan nicht testen und kann auch zu den Zeigerausschlägen nicht sagen, ob die ok sind.

    Ansonsten einfach den Hex Teiler entsprechend im Code für $LeftChLvl bzw. $RightChLvl ändern.


    UEZ

  • GDI+ Visualization: Analog Meter

    • UEZ
    • 11. März 2009 um 10:30
    Zitat von K1773R

    Line Out ^^
    also all des was du hörst.

    Was alles die BASS.DLL + Derivate kann, habe ich mir im Detail nicht angeschaut. Vielleicht ist es auch möglich den I/O der Sound Karte abzuzweigen und mit dem Visualisierer darzustellen.
    Momentan spielt es nur Audio Dateien ab, aber du kannst ja gerne den Code umschreiben, so dass es direkt den I/O Stream darstellt ;)
    Ich weiss nicht, ob ich die Zeit dafür haben werde...


    Gruß,
    UEZ

  • GDI+ Visualization: Analog Meter

    • UEZ
    • 10. März 2009 um 12:00
    Zitat von K1773R

    Gefällt mir sehr =)
    Wäre es möglich die gesamte Ton-aus/eingabe anzeigen lassen?

    Danke, für das Feedback.

    Was genau meinst du mit "gesamte Ton-aus/eingabe anzeigen lassen"?

    UEZ

  • GDI+ Visualization: Analog Meter

    • UEZ
    • 9. März 2009 um 20:28
    Zitat von GtaSpider

    Hallo

    Jup, war aber positiv gemeint :D

    Das ist richtig, aber du musst die BassConstants.au3 ja mitliefern, da deine Bass.au3 ja keines Falls kompeliert o.ä. wurde ;)

    C
    D:\..\Bass.au3(4,10) : ERROR: can't open include file <BassConstants.au3>
    #include <BassConstants.au3>

    Mfg Spider

    Ups, stimmt. Ich habe die bass*.au3's in mein include Verzeichnis, und deshalb ist es mir nicht aufgefallen!

    Werde die Downloads gleich mal updaten!!!

    DANKE für den Hinweis! :thumbup:

    UEZ

  • GDI+ Visualization: Analog Meter

    • UEZ
    • 9. März 2009 um 19:33
    Zitat von GtaSpider

    Hallo

    Ein Typisches UEZ Produkt. Sieht wirklich gut aus, respekt ;)
    Könntest du vlt noch die BassConstants hinzufügen?

    Mfg spider

    Danke für das Feedback :)

    So, mein GDI+ Zeug ist also typisch für mich :P

    Die BassConstants wird in der Bass.au3 geladen ;)

    UEZ

  • GDI+ Visualization: Analog Meter

    • UEZ
    • 9. März 2009 um 13:21

    Click Me Link korrigiert! :whistling:

    Sorry,
    UEZ

  • GDI+ Visualization: Analog Meter

    • UEZ
    • 9. März 2009 um 13:13

    Hab' ein GDI+ Visualizer geschrieben:

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Spoiler anzeigen
    [autoit]


    ;code by UEZ 2009
    #AutoIt3Wrapper_Run_Obfuscator=y
    #Obfuscator_Parameters=/sf /sv /om /cs=0 /cn=0
    #AutoIt3Wrapper_UseUpx=n
    ;~ #AutoIt3Wrapper_Run_After=upx.exe --best "%out%"
    #AutoIt3Wrapper_Run_After=upx.exe --ultra-brute "%out%"
    #AutoIt3Wrapper_Run_After=del /f /q "Visualizer_Analog Meter_Obfuscated.au3"
    #include <GUIConstantsEx.au3>
    #include <GDIplus.au3>
    #include <Memory.au3>
    #include <Misc.au3>
    #include <WindowsConstants.au3>
    #include "Bass.au3" ;thanks to BrettF and ProgAndy
    Opt("GUIOnEventMode", 1)

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

    #Region load image files
    Global $dll = DllOpen("user32.dll")
    _GDIPlus_Startup()
    Global $bitmap_from_file
    $bitmap_from_file = Load_BMP_From_Mem(VU_Image()) ;thanks to AIMP2 player ;)

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

    Global $bitmap_from_file2
    $bitmap_from_file2 = Load_BMP_From_Mem(VU_Fragement_Image())

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

    Global Const $iX = _GDIPlus_ImageGetWidth($bitmap_from_file)
    Global Const $iY = _GDIPlus_ImageGetHeight($bitmap_from_file)
    Global Const $width = $iX * 2
    Global Const $height = $iY
    #EndRegion

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

    #Region initialize sound and load MP3
    Global $levels, $LeftChLvl, $RightChLvl, $l_x2, $l_y2, $r_x2, $r_y2, $r, $current
    Global $ChLevel = 0x1000
    Global $volume_error = 0
    Global $ve
    Global $volume_boost_level = 2
    Global $needle_decrease_speed = 0.0275
    Global $no_load = 0
    Global Const $bass_dll = _BASS_Startup(@ScriptDir & "\BASS.dll")
    If @error = -1 Then
    MsgBox(16, "ERROR!", "Could not load BASS.dll" & @CR & "Terminating... ")
    Exit
    EndIf
    Global $file = FileOpenDialog("Select MP3...", "", "MP3 Files (*.mp3)");
    If @error Then
    $no_load = 1
    MsgBox(16, "Error", "Could not load audio file!" & @CRLF & @CRLF & "At main screen you can press O to open file open dialog window" & @CRLF & "or you can drag'n'drop a mp3 file to window!", 20)
    EndIf
    Global $filename = StringMid($file, StringInStr($file, "\", 0, -1) + 1, StringLen($file) - StringInStr($file, "\", 0, -1) - 4) ;get the filename only
    Global $file_suffix
    _BASS_Init($BASS_DEVICE_CPSPEAKERS)
    Global $MusicHandle = _BASS_StreamCreateFile(False, $file, 0, 0, 0)
    Global $song_length = _BASS_ChannelGetLength($MusicHandle, $BASS_POS_BYTE)
    #EndRegion

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

    #Region GUI
    Global Const $WM_DROPFILES = 0x0233
    Global $hwnd = GUICreate("", $width, $height, -1, -1, Default, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW, $WS_EX_ACCEPTFILES))
    GUISetOnEvent($GUI_EVENT_CLOSE, "Close")
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "Move") ;move main window when lmb pressed and hold on main window
    GUISetState()
    #EndRegion

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

    #Region initialize GDI+
    Global $graphics = _GDIPlus_GraphicsCreateFromHWND($hwnd)
    Global $bitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $graphics)
    Global $backbuffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
    _GDIPlus_GraphicsSetSmoothingMode($backbuffer, 4)
    Global Const $pen_size = 2
    Global $pen = _GDIPlus_PenCreate(0, $pen_size)
    Global $brush_l = _GDIPlus_BrushCreateSolid()
    Global $brush_r = _GDIPlus_BrushCreateSolid()
    _GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, 0, 0)
    _GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, $iX, 0)
    #EndRegion

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

    #Region constants
    Global Const $pi = 4 * ATan(1)
    Global Const $pi_div_180 = $pi / 180
    Global Const $max_amplitude = 450
    Global Const $min_x = 25
    Global Const $max_x = 160
    Global Const $pointer_ini_point_y = 80 ;less is longer
    Global Const $pointer_start_y = 93
    Global Const $pointer_length = 65
    Global Const $ellipse_size = 8
    Global Const $ellipse_size_half = $ellipse_size / 2
    Global Const $width_div_4 = $width / 4
    Global Const $width_div_2 = $width / 2
    Global Const $sleep = 30
    #EndRegion

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

    #Region play audio
    _BASS_ChannelPlay($MusicHandle, 1)
    $volume = _BASS_GetVolume()
    If @error Or $volume = 1 Then ;check whether _BASS_GetVolume() returns 1
    $volume_error = 1
    $ve = "YES! Volume controlled peak disabled!"
    Else
    $ve = "NO!"
    EndIf
    #EndRegion

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

    #Region initialize title in window
    Dim $title[25] = ["º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`", _
    " GDI+ Visualization: Analog Meter", _
    " Playing: " & $filename, _
    " Get volume error: " & $ve, _
    " Press P to pause current song", _
    " Press C to continue after P was pressed", _
    " Press O to open another song", _
    " Press ESC to exit program", _
    " Credits:", _
    " Main coding by: UEZ 2009", _
    " Bass UDF: BrettF (modified by ProgAndy)", _
    " Bass DLL: http://www.un4seen.com", _
    " Image: AIMP Player", _
    " And of course", _
    " AutoIt developers ;-)", _
    "•*´¯`*•.¸ .. ¥ .. ¸.•*´¯`*•*´¯`*•.¸ .. ¥ .. ¸.•*´¯`*•*´¯`*•.¸ .. ¥ .. ¸.•*´¯`*.¸ .. ¥ .. ¸.•*´¯", _
    " Greetings to: ", _
    " All members from", _
    " http://www.autoitscript.com / http://www.autoit.de", _
    " Richie for the good ideas to improve Analog Meter", _
    " Christos", _
    " and", _
    " DrSchulz (http://www.drschulz-music.de/) ;-)", _
    " ", _
    " Restarting text..."]
    Global $c = 0 ;counter for sleep
    Global $i = 1 ;for character
    Global $j = 0 ;for array
    Global $k = UBound($title) - 1
    Global $s = 150 ;sleep time
    Global $in = True
    Global $effect = Random(1, 2, 1)
    Global $g = 0x00
    Global $b = 0x00
    Global $pause = 0
    #EndRegion

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

    #Region additional GUI functions
    GUIRegisterMsg($WM_DROPFILES, "WM_DROPFILES") ;enable drag'n'drop
    GUIRegisterMsg($WM_TIMER, "Draw") ;$WM_TIMER = 0x0113
    DllCall("User32.dll", "int", "SetTimer", "hwnd", $hwnd, "int", 0, "int", $sleep, "int", 0) ;set GUIRegisterMsg($WM_TIMER, "Draw") timer
    #EndRegion

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

    Do
    Until False * Not Sleep(100000) ;do nothing, just sleep

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

    Func Draw()
    If WinGetState($hwnd) = 15 Then ;only activate keys when window is active
    If _IsPressed("50", $dll) Then ;P pressed (pause)
    _BASS_Pause()
    $pause = 1
    ElseIf _IsPressed("43", $dll) Then ;C pressed (continue after pause)
    _BASS_Start()
    $pause = 0
    ElseIf _IsPressed("4F", $dll) Then ;O pressed (open file dialoge)
    $file = FileOpenDialog("Select MP3...", "", "MP3 Files (*.mp3)")
    If Not @error Then
    $file_suffix = StringRight($file, 3)
    If StringLower($file_suffix) = "mp3" Then
    $filename = StringMid($file, StringInStr($file, "\", 0, -1) + 1, StringLen($file) - StringInStr($file, "\", 0, -1) - 4) ;get the filename only
    $title[2] = "Music: " & $filename
    _BASS_ChannelStop($MusicHandle)
    $MusicHandle = _BASS_StreamCreateFile(False, $file, 0, 0, 0)
    $song_length = _BASS_ChannelGetLength($MusicHandle, $BASS_POS_BYTE)
    _BASS_ChannelStop($MusicHandle)
    _BASS_ChannelPlay($MusicHandle, 1)
    EndIf
    EndIf
    EndIf
    EndIf
    $levels = _BASS_ChannelGetLevel($MusicHandle) ;get 16-bit level for l/r
    If $no_load Then $levels = 0x00000000
    $l_w = _HiWord($levels) ;get volume level from left (15-8 bit)
    $r_w = _LoWord($levels) ;get volume level from right (7-0 bit)
    If $l_w < 0 Then $l_w = ($l_w + 1) * - 1 ;invert value to positive value (a bug in bass.dll?)
    If $r_w < 0 Then $r_w = ($r_w + 1) * - 1
    If $volume_error = 1 And $pause = 0 Then
    $volume = 0.33333
    Else
    If $pause = 0 Then $volume = _BASS_GetVolume() * $volume_boost_level
    EndIf
    If $pause = 1 Then ;if pause then move needle to position 0
    If $volume >= 0 Then $volume -= $needle_decrease_speed
    EndIf
    $LeftChLvl = 1 + Round($l_w * 135 / $ChLevel * $volume, 0) ; 135 = $max_x - $min_x
    $RightChLvl = 1 + Round($r_w * 135 / $ChLevel * $volume, 0)
    $l_x2 = $min_x + $max_x * ($LeftChLvl / $max_amplitude) ;set x/y coordinate of needle
    If $l_x2 >= $max_x Then $l_x2 = $max_x ;avoid exceeding right limit of needle
    If $l_x2 < $min_x Then $l_x2 = $min_x ;avoid exceeding left limit of needle
    $l_y2 = $pointer_ini_point_y - Sin($l_x2 * $pi_div_180) * $pointer_length ;calculate length of left needle (radius) depending and new x/y coordinate
    $r_x2 = $min_x + $max_x * ($RightChLvl / $max_amplitude)
    If $r_x2 >= $max_x Then $r_x2 = $max_x
    If $r_x2 < $min_x Then $r_x2 = $min_x
    $r_y2 = $pointer_ini_point_y - Sin($r_x2 * $pi_div_180) * $pointer_length
    _GDIPlus_PenSetColor($pen, 0xCF111111)
    _GDIPlus_GraphicsDrawLine($backbuffer, $width_div_4 - 1, $pointer_start_y, $l_x2, $l_y2, $pen) ;draw left needle
    _GDIPlus_GraphicsDrawLine($backbuffer, $width - $width_div_4 - 1, $pointer_start_y, $width_div_2 + $r_x2, $r_y2, $pen) ;draw right needle
    _GDIPlus_GraphicsDrawImageRect($backbuffer, $bitmap_from_file2, 68, 76, 53, 30)
    _GDIPlus_GraphicsDrawImageRect($backbuffer, $bitmap_from_file2, $iX + 68, 76, 53, 30)
    $r = $LeftChLvl * ($LeftChLvl / 0xFF)
    _GDIPlus_BrushSetSolidColor($brush_l, "0xFF" & Hex($r, 2) & Hex($g, 2) & Hex($b, 2))
    _GDIPlus_GraphicsFillEllipse($backbuffer, $width_div_4 - $ellipse_size_half - 1, $pointer_start_y - $ellipse_size_half, $ellipse_size, $ellipse_size, $brush_l)
    $r = $RightChLvl * ($RightChLvl / 0xFF)
    _GDIPlus_BrushSetSolidColor($brush_r, "0xFF" & Hex($r, 2) & Hex($g, 2) & Hex($b, 2))
    _GDIPlus_GraphicsFillEllipse($backbuffer, $width - $width_div_4 - $ellipse_size_half - 1, $pointer_start_y - $ellipse_size_half, $ellipse_size, $ellipse_size, $brush_r)
    _GDIPlus_GraphicsDrawImageRect($graphics, $bitmap, 0, 0, $width, $height)
    _GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, 0, 0) ;clear screen by overwritting screen with bmp (left)
    _GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, $iX, 0) ;clear screen by overwritting screen with bmp (right)
    $current = _BASS_ChannelGetPosition($MusicHandle, $BASS_POS_BYTE) ;get current song position
    If $current >= $song_length Then _BASS_ChannelPlay($MusicHandle, 1) ;replay song when it is finished
    Display_Info() ;display win title info
    EndFunc ;==>Draw

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

    Func Move() ;move whole window when pressed lmb and hold continuing drawing of window content
    DllCall("user32.dll", "int", "SendMessage", "hWnd", $hwnd, "int", 0x00A1, "int", 2, "int", 0) ;$WM_NCLBUTTONDOWN = 0x00A1
    EndFunc ;==>Move

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

    Func WM_DROPFILES($hwnd, $msg, $wParam, $lParam) ;drag'n'drop function - I don't know who made this
    Local $tBuffer = DllStructCreate("char[256]")
    Local $iString
    ;Get dropped items count
    Local $aRet = DllCall("shell32.dll", "int", "DragQueryFile", "int", $wParam, "int", -1, "ptr", 0, "int", 0)
    ;Getting name only from 1st dropped item
    DllCall("shell32.dll", "int", "DragQueryFile", "int", $wParam, "int", 0, "ptr", DllStructGetPtr($tBuffer), "int", DllStructGetSize($tBuffer))
    $iString = DllStructGetData($tBuffer, 1)
    DllCall("shell32.dll", "none", "DragFinish", "int", $wParam)
    $file = $iString
    $filename = StringMid($file, StringInStr($file, "\", 0, -1) + 1, StringLen($file) - StringInStr($file, "\", 0, -1) - 4) ;get the filename only
    $file_suffix = StringRight($file, 3)
    If StringLower($file_suffix) = "mp3" Then
    _BASS_ChannelStop($MusicHandle)
    $title[2] = "Music: " & $filename
    $MusicHandle = _BASS_StreamCreateFile(False, $file, 0, 0, 0)
    $song_length = _BASS_ChannelGetLength($MusicHandle, $BASS_POS_BYTE)
    _BASS_ChannelStop($MusicHandle)
    _BASS_ChannelPlay($MusicHandle, 1)
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_DROPFILES

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

    Func Display_Info()
    If $in Then
    If $i <> StringLen($title[$j]) + 1 Then
    If $effect = 1 Then
    WinSetTitle($hwnd, "", StringLeft($title[$j], $i)) ;effect 1a, 1 by 1
    Else
    WinSetTitle($hwnd, "", StringRight($title[$j], $i)) ;effect 2a, scroll to right
    EndIf
    $i += 1
    Else
    If $c = $s Then
    $i = 1
    $in = False
    $c = 0
    $effect = Random(1, 2, 1)
    Else
    $c += 1
    EndIf
    EndIf
    Else
    If $i <> StringLen($title[$j]) + 1 Then
    If $effect = 1 Then
    WinSetTitle($hwnd, "", StringLeft($title[$j], StringLen($title[$j]) - $i)) ;effect 1b, 1 by 1
    Else
    WinSetTitle($hwnd, "", StringRight($title[$j], StringLen($title[$j]) - $i)) ;effect 2b, scroll to left
    EndIf
    $i += 1
    Else
    $i = 1
    $in = True
    $effect = Random(1, 2, 1)
    If $j = $k Then
    $j = 0
    Else
    $j += 1
    EndIf
    EndIf
    EndIf
    EndFunc ;==>Display_Info

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

    Func Close()
    _BASS_Stop()
    _BASS_Free()
    DllClose(@ScriptDir & "\BASS.dll")
    GUIRegisterMsg($WM_DROPFILES, "")
    GUIRegisterMsg($WM_TIMER, "")
    DllClose($dll)
    _GDIPlus_PenDispose($pen)
    _GDIPlus_BrushDispose($brush_l)
    _GDIPlus_BrushDispose($brush_r)
    _GDIPlus_BitmapDispose($bitmap)
    _GDIPlus_GraphicsDispose($graphics)
    _GDIPlus_GraphicsDispose($backbuffer)
    _GDIPlus_Shutdown()
    GUIDelete($hwnd)
    Exit
    EndFunc ;==>Close

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

    Func Load_BMP_From_Mem($pic) ;coded by UEZ. Thanks to ProgAndy for mem allocation lines
    Local $memBitmap, $len, $tMem, $hImage, $hData, $pData, $hStream, $hBitmapFromStream
    $memBitmap = Binary($pic) ;load image saved in variable (memory) and convert it to binary
    $len = BinaryLen($memBitmap) ;get length of image

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

    $hData = _MemGlobalAlloc($len, 0x0002) ;allocates movable memory ($GMEM_MOVEABLE = 0x0002)
    $pData = _MemGlobalLock($hData) ;translate the handle into a pointer
    $tMem = DllStructCreate("byte[" & $len & "]", $pData) ;create struct
    DllStructSetData($tMem, 1, $memBitmap) ;fill struct with image data
    _MemGlobalUnlock($hData) ;decrements the lock count associated with a memory object that was allocated with GMEM_MOVEABLE

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

    $hStream = _WinAPI_CreateStreamOnHGlobal($pData) ;Creates a stream object that uses an HGLOBAL memory handle to store the stream contents
    $hBitmapFromStream = _GDIPlus_BitmapCreateFromStream($hStream) ;Creates a Bitmap object based on an IStream COM interface
    $tMem = ""
    Return $hBitmapFromStream
    EndFunc

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

    Func _WinAPI_CreateStreamOnHGlobal($hGlobal = 0, $fDeleteOnRelease = True)
    Local $aResult = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "hwnd", $hGlobal, "int", $fDeleteOnRelease, "ptr*", 0)
    If @error Then Return SetError(@error, @extended, 0)
    Return $aResult[3]
    EndFunc ;==>_WinAPI_CreateStreamOnHGlobal

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

    Func _GDIPlus_BitmapCreateFromStream($pStream)
    Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $pStream, "int*", 0)
    If @error Then Return SetError(@error, @extended, 0)
    Return $aResult[2]
    EndFunc ;==>_GDIPlus_BitmapCreateFromStream

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

    Func VU_Image()
    Local $VU = '0x89504E470D0A1A0A0000000D49484452000000BE0000006B0803000000FE59C833000002A6504C5445000000FFFFFF282828707070B8B8B8484848D8D8D8F8F8F8808080A0A0A0181818E0E8E0F0F0'
    $VU &= 'E8E8F0E8C8D0D0E8F0F0F0F8F0D8E0D8809088586868909898E0E8E8F0F8F8607068707878B0B8B8F8F8F098A0A0D0D8D880888898A8A0D8E0E0C0C8C8C0C0C0687070C0C8C0C0C0B8E0E0D8788080B8'
    $VU &= 'C0C0D0D0D0585858787878888888D0D8D0B0B8B0F8F0F0606060909090A8B0B0A0A8A850605868686860686898A098808880708078A8B0A8485858889090A0A8A0F0F0F8989898707880788078788888'
    $VU &= '7078709898A0788880506860D0D0D8F8F0F8808890687878909890B8C0B8A0A098806040A08080D04838D0C8C888908890A098808078B84030D04038C03828C86050E0C0A0B8B8B0C8C8D0C03830C840'
    $VU &= '30C83830C04840505858B8C8C0C84038E08080889898D03830A08060888880B06058E8E0D8586860F0E8E8687068F8F0E8384840789088907068C8D0C8C83828986858C83028202020C83020D8D8D098'
    $VU &= '7870B0B0B8708080586060485050B0B0A8606860687870B06860C02020787070806060A87060404020787870806868A8A8A03838380404042C2C2C4C4C4CDCDCDCFCFCFC8484840C0C0CA4A4A4B4B4B4'
    $VU &= '1C1C1CF4F4F4F8FCF8C4C4C4FCFCF8D4D4D4CCCCCC7C7C7C8C8C8C545454F8FCFC6464645C5C5CFCF8F8FCF8FC6C6C6C9C9C9CF8F8FCFCE0E084807CBCC4C07C88848C7C7CB06458A4ACA87884809C6C'
    $VU &= '60D0D0CC808C88A47C7C8C94949C808098A09C90746CC44038D4D4D0807C7CA04C4074807C787C7CBC4838CCD0CCB8BCB8A46C58C8CCC8E4E8E0F0FCF8E4E8E4B0B4B0ACB4AC748080B05044BCC0BCC0'
    $VU &= 'C4C0F4F8F4808C8CAC5848DCE0DCB4B8B4E0E4E0909C98D0D4D0D4D8D4ECECEC080808F0F0F0E0E0E0C8C8C8303030BCBCBC343434747474ACACAC404040A8A8A8505050101010E8E8E8E4E4E4B0B0B0'
    $VU &= '3C24B1380000138849444154785ED4CE091180400C03C0F87797F4BBE3C70903A8E82A58BC7474849F726E773FCBD0B75FCB78B29FD80520CBDCAF861803D0E443ADB930B7719D67386F84D997A82060'
    $VU &= '652F69620196209902AC094004AAD0A201B156DA38159D984E2A516A493111CBDED354AEABA497B4EEC56D33196D860A964B8E02696123AD5BB95737BD5A7553A9357BA1EBB0D80DC71C3687FC27DD3D'
    $VU &= '806C6A466401096CC9678667170B70F6392FBFF3EDC10C9D1A0D1C380CA736F45F1FF8CE86A8E140521357BFFA81EFCCD70C1C488C5AE0173DFD927130FD8D52E040A75F6AA48FB6E31CC6DEB357FA22'
    $VU &= '14728E8450E748588908F8080121F6505F2E02431E1E663D1C518F3EF2A8D6D9059F4EEDB1EEA80A494844F040348CA4DE5EA71FD2118DC57B34C227FEDD22DADD0B807A88899EB0B977E9F7AD01A50D'
    $VU &= '6761CDC0421F9A4357750BDBA06532A422D11F40973310F8D0F7805A52585043AA8ADE4753780F9D6CD6735D0194AD55EFC02D07C67DF50D6CDD58C5D2D7C45007E0FD34533FA44EA66320F4BB524A2A'
    $VU &= 'E366E1F6C748E1284A08D1FE30542015CD887832FEBE3C84D394BF01BE7B0DB8F678ED6B6BA8DDE8DB517FF55800C31D181A028687D0042455DF3452D675BC87A0A320D7EF200B8FFCF7A5CA5D001871'
    $VU &= '10EDE9B47097D4F10FE755B329FFABD76BA5EB7DF4D46BD777D28781A1AFF0F8163AEAFABB87AF53922502FD230901E23D4CA49F489E182565ED3FF664774E9E9188152296BC4C20FCE14C6F320AB009'
    $VU &= '7D71C31D3C56ABFD6FFA7DC7D78F8BBBE9EFE84F50272801A114F3C998BAFD5DC089C6EB5E3C12118A68E8331FA54D13365861ACA08A421ECDF1956BC3D7BCE258D85DBF74E8C63030FFF26AE9DDE19D'
    $VU &= 'D3274DA88E0EB24267204D22DC93C6364894554AE76D156E9327BB4C0B0D0A39A4BBB74F7AB7F8176E78EAA543631CFCDEC19DF46120F8DF2EB0F9EEF5EB87941DF4E913C93DF9FD11E8603CA550A4C3'
    $VU &= '85C23DD5439B03B948432B11149010423969120D466227B5A7EAD77D5801B9A37EEDE543252070ECF8B1E1D28EFA40CD316080CA620D3BCBC32968A74E45EA45444BCD7CC4B76705EF41B845D1388B6A'
    $VU &= '114854247E60DB2C7B7FF0A38FF40220558064D689606736053CC4E215DF6FF7C79621871DED492190D3BAC04A850DBABA68DB3621314984F375531BB9BBEB8288E655E8044CF94A3D2A7D093DE924C9'
    $VU &= 'D050E1E1F73CF2FCFE2D9F55BB629A204174697992B0E9A1EB48F8B224984F80F223F13147EA5B9E3EC146E3C9D1A2457F3B6143282C37AEC73F12054432B6FBB6418EC6036DD958A75CB56942B821B5'
    $VU &= '90A387D437758487D2204DBFA0E5822694B1A7C10A6095F3BE3E818F21A20560EBE8D504BAC0BC1629AB000826A3C948249F74F66AC749CB22510F9E69D781D3110525302D1D915886202DA40A521570'
    $VU &= 'F2E1C6C76377D387A3C96BD11FAAB20BCE232964650400A943391100F746DFAE5A047B3BCBA46DA942B72052BDB2724CAABA45223712814EA2B7A0420D09E5E94CFFA9DC482C56D062FDA7F3F95C34E5'
    $VU &= 'C6D54041E61BCB43253ED4A180A00DD3247572645CBD579F6D4CDF632C291337CD323D0027206B2097024FC22D2800184AF7C7A2C1582C968FA61289703C1E5794DEDE703811CDE563B16477F019D771'
    $VU &= '4E2920F9F14F3C3BF15CD6A2C8DA242D1E15F00F68C036EAD3041249D5E9C8F9FEB42AB009F1C91448331A3B821022B154281D0D6ADAA772036941DC0F5528CF8C7E4A3BF1643E1D81F8E1336727CF9C'
    $VU &= '3BFF231B02A4CD4E15A4499F0AC0066D4A5FA4B23F7A8A08271DE866D52ED326311013C8C2D1126059F4F4C7F2195789C0476ADC7F3F4CA124F29A96FFE427A62626A62FCC7833C85A3A5CAD57CE8226'
    $VU &= 'A9FA7D1440B94DFA44E2D31A92792FE3005456099A20C4480A24735A3CA515728DCCEBC38E7FFABA917AF833E3E3E3335317272626CE5E3C37FBF5C88FE5A47DC53449FA7DD419D204DAA4AFB2B33FEA'
    $VU &= 'F41773DD0A74BB6C9BA64D12294D806AFEA33DB9B0DA48AB19480B80353EFEFB2FCE5C9C3B3B71616AF6C77FE20828A990F0FBA813CD6B026D4A9F88F73FAD16C7C22069B2EC8F1FAB44F21925373E7A'
    $VU &= 'D404CA680D822C0FBC7AFA0FFFE8E2F4D9B3D39333B33FC5B2CE3A2AE1913971B43DFA10AE8354FF610032A00A65F7815AF8692D2500130F46B5BA7AF3B527FEF8CCE4F4C4D9A999D99F0149DBAC10A1'
    $VU &= 'B49BEFF8D9F6741E42A41412AE83CE9C03B242593AA194968F13241E0276FDC99F9EFE337F15CC5D3877FEB3A00FC4899F2BA69C87D4679D0A850049942DE6345297F26AB49077F0F090D6DB7F7EFA2F'
    $VU &= '6626A7CF5E983A77DE2E93EC82F8DCE7BA2AF0301F589FA41C6D0296491F44623950273850C81F0688366093B5D86B7FF90DAF0D5DF09600988513E9FA8C83874A9F84C86404C8B269DB264DD324E1F8'
    $VU &= 'CFAAEA252DE8A07D50D7F5D74F3FFB8DE727262ECE9CCFE2E9EEF4FBB9930FA24FA2735CD39E4883B42C5AA6E51F88818288C4B430DA0D3B0BA77FE1F939AF82669F4BA6409D2024BBE97F7517FD4041'
    $VU &= '20DA110749D3F2C3B74D12D17ECD55B117FC55CF5FFFCDF4C4DCF499675966B5AE4FAAA4BE5BFA1BF7D3A74D284303508341153449D3362D9270C63501624FE0CADFFEFC0B73D35E0FCD8255D3040824'
    $VU &= '334901ABB5E2D121B47191EA4E9C8C8D8440DB96954F0B033DA9965A258956587DE4EFFEFEC2D90B93E7BE5EF66F4AEA0825C723B8F4CC11E84DA62FED0BB958B2F352F244410169D9F4ED11098E09E8'
    $VU &= '2D1895DE192CA115AA6BAFFDC3E485B9CBE73E0FFA37B5993C9C1418481655B4A0AF0C29C20B5AA443A054B76DC2D146D50A4DAB697FBEB9B47489065AE11F4F7F61F2F9B91766CE83FC266DD2AE300B'
    $VU &= 'E5291746B3FA34D5742892FFA5A80BD8A44E1FB88530C88A65A3490C717BD3B92D5AD387FECF43FFE2F94F9DB7A99BD411D714B5E7576291E6D3A76E9AB432BF9A14A12F5E828C9E88161C90AC12CD52'
    $VU &= '5A1E14627099688D7FFDB79E7F7F61EEF2D4AC6D67AB44FCB18CF36B79902D148FEA3A883EA58099A40BFAE462219036596D3A7CE796B3BAEAAC6C1A680DFEE7AB3F7979FAF9C9D9ACAD1348FCFAA7B5'
    $VU &= '93660BB56FAAA930784485AE23D19D4296EA5891205931D134A59545E1F1CEAD125A83E5FC6B9EFFE5C9D9CF96F99C4BA11064F3FA74D2042D929E7FF8A91C446194F56F8855340BBFB5EC080FE7AD2B'
    $VU &= '2DC66F92B95F7EF1F2DC0BBF316BE77ED32D1326C9E6FB3E6952A243B8914B3DB142942069A3798CDAA8227C36176F975AF3376DF2D68917A7E6E6667ECB2B6055A507764ABF761FFD063A39F2443CFF'
    $VU &= '6800244DA205F8C682B32971FEE01DA225E89138FDDB53675EFA9D23C8D29655D0D2A6017568E95FECE8CF116415AD60883B8AA72FF9D6E86A6BF1DB0079E9D5DF7DE9F7AAD469FBFE6821FDED58F028'
    $VU &= '93680D2E2FF9F61267E04DB65AFDE8FAE6958F3F53A66ED307BBEAB71BC3787B4571DE43B9D3F4B3CBB2D0802C83ACCF053BE87FF01E7D03BB0336AB5F5A59BA5237F7872BEE328D66F56D34A8EE94FA'
    $VU &= 'DEA7AFDCAA7B2FAE2CCA49DC7EBB597DC084846017EA34917EFB904D7349B9E2B1B8B2BCE29F28EE4AA9F5BB10FF3FFA7CE32D69AF2CBFB99A7115390FA54D77D97B7D63757450DABB999AE1DC5EF4CE'
    $VU &= '14F74ECD300E84BEC1E5BE45C563E9CEDB86FF6270707069616B900742DF30366F0FFAF683B73C6303B595A24730B87240F44B2B0B8B3ECB8DAD6669B5E653327020F4959525DF7EB0CF91D6F7D2CE59'
    $VU &= 'B4BFEFCBA6B93028F503C5E03DBCFEFAC848B0F816DB9AFE77ADB7579F6FDC1A6CE02EF479ACADC9211008DC2EDE743789F6E9AF79FAED4DDF58BDB920DD975C692FF1DC57EE146F29B5120DB453BFDD'
    $VU &= 'E91B1C58715D571A37B8BA75F5F6CDD137376B256F0D1BD8BFFAB269DEDC0A5CBDBAE5E31FD6D7B746FDD8595B5596B78A77560D633FEB9756E6D7EFB2B1B1BE5E1C75FFA944C360A6589C9FDF985FE3'
    $VU &= 'BED6BF321F9CDFD8D898F71ACDC64631A0D4287D0D2E8FCC7B048BFF61ECDBA56B18A59BAF78E2AF8C0537FC26E3C7FE5E3B9DF7DF098E8D960C639FA66F70F095316D2C381F5C91B11BDB67B6383236'
    $VU &= 'F6CAD8D8C81BDCB7FAA53B63C1EDB16FD72FDD1996AC97DAA7DFD7567DD46E66646F6FC8DFEB2FAE06D63C166A86B15F97AE54DFB1B4EA18D8AFE963D7FF9C37EA603FE9B7CEC1D037600077D3360E98'
    $VU &= 'BE0189D4971807465FAAD694BEE1C70FBDEC71E8F1E13EA5262FFFDFEA1BA55A8D0F225F5A1A3EFEA56F7FF9830DBEFCED2F1DBBE6961E6402945F321F40DF40EDCAC2FAD6924318ADC9AFFE0FE756B4'
    $VU &= '9CAA0E451B0C89F8DC1FC81BC5077CE099AFF223A88285320CA8A333FA4734092844217F7283B6A770CFB9BDED592A387BEFC9ACACBDB3639C41EE3C45F974F2DE713AA9A978B668C00F87C26D262BE2'
    $VU &= 'D3BF519FA6EE78B359877EFCA3277CB0DC2F34C5FDC6FE763B75E892B1AD6817F16DC4BEB036B3F1CCA43FA5AF683077255C578CC336F88168E85C2CEEDCEBA57D50C53F72F67A7D9FC862E1643FE95C'
    $VU &= '8D1C2B06E166E36310FC507D9A8C67B6BD77662B137F3FDBF052D41D3CDDB6D68AF9656B3BE7B565D7DECD5CE8F2FB8D02A3A93BDADBF66C55D29FFD685029A672B5BD6CB74B7B45E877E9C7E272D93F'
    $VU &= 'EDB7B53EB20E975ABBBEBCBDBD5DE7F565B43EE8F593725D9647FADD64C6C96AB7DC2AACC59F8B2E268BFFA00F024AB6A75AE16467F49BECA9B01D6B3CB67567BDAF4FDAF57ADA1F0EF669729D9FF4DD'
    $VU &= '5A99C7E3B563BBF91F98F41FD6FBD82BE26CE779B74C7614DF5FBD384007F48788D176A12AD6D30E2CFE865C41C77EEF8CA7D6E562ED54B1CF5F74C1681C53269F147FAF76ACE576BD1A1F9EDCFC7BFA'
    $VU &= 'E3C6D2BA55B4D0BBB5FBFFEA078332CEA5A71585B62479F02DED71B577A6B391EE5875A1D84FC68CD25881D276367FF5BC6269D9FA79361DED8DDFD2C97C9A6293509A99D8375384EF7AF0AD62B03819'
    $VU &= '79B7741B1FA828EA339435C0CFF0803E2B4D24A1292346A20C71151E53E8E8CB11A7F8361DC263D8CA469A304A7104E3DF562DB1157B5BB7EC42B1D726B3B6C9E91D4D7B7C55FA178573D69DD9D4D947'
    $VU &= 'C34E1200689023811C9A5102AB2811F71325A699B5D46D99E37B0C95CC4D8E5042112722EB174F208F50D06CC65925431395DDF01853C628C6F74419A2A9D80CBABCAA2066B21D663308D0C1DECC2EDB'
    $VU &= '753DEFB6A9898358F30B0C9D275D3B9D2FD797A7D9C676CC000C90B8C72A444026666CC8924777F79D418E6FEC73C335210B8F4722650628CC07EABBC7B26A1237415292368D62FC71C008EEFA64EE91'
    $VU &= '54CC758D44701A10180CE50BE8E66935D577A3422B14B44594B24FB4293CCD6F76CFDA2F67D3A771D32FFF001021A5292547426611E161692A639F41009228A92225AE2C230C7068B41DFDE2437D9EF9'
    $VU &= '4C121F96392F3306617B5FE41F00BC61256F13D34C4D00A82CF3BEFA2AA0DC9F2D7D64CFB562B15814AF76827CE4BF0321C40FAF3787A61D0EFAD47A92C346D82D119033809B1C505575AD1A7E70FA09'
    $VU &= '020A00A53856A04110E44D7C57FFF58B8DE4071BA465DB97F572A2DD50BC8E93B40733E59B7971F74D9EACE5C839B04E9D1FE1F778A5FE07FD28C349D4B028C13C0E383139565E96519E129E91848280'
    $VU &= 'F332C10043642698247858F972BF7CB28A8936BF61319F1233EBC1248F0BEDEED4AEF5FAB2DD8741BF78D2927342987AA3D2447E9A22546256129F93B4F33765C21100698609E50941CAC500A0BFE807'
    $VU &= '3E521643B491297320A06B6060CECCF298F26329239182401866C90197A282992958BF76036AD53B4BBBCEDF51CC57900F006785F6E19D14EBBD3E6AFAE5534A3FEA3A4AC488E0A812A1846E6A4A1855'
    $VU &= 'D2ECEA0755709A005C1938314A215126A3B2AF7E809BC8C4C710101EE581806685B198C15619248255B76BCBB0C94A40122138427050F940D62367727D9DBC2AA86BA15932213D2472AC151FEEF9757E'
    $VU &= '3E7812F4F813E9C34AF8823724EA9A4F65548F9257A12F09BAD137D47000B98F6960E41561A608D9A078046CA22A35AB889651023188202C194424C8222E1AAE3480308214E48240C9C22807BDCD4EE8'
    $VU &= 'D6F67A9D7CE05A68F611963D40C3D18AC967C075775E42F079904C18200D2F21411C26314C9128591931A406C97010048803BF22D24C212E6954A61CA181FA00DF3FF4D6AD06CFFD759DEBCE15BF5FB0'
    $VU &= '0A093E0B379E2EC7F5DBB5074DAB570246BF00ABA9AE69FD88B7E55A7F049F12BC1FEC3106EF8DF2C33858220A7D6AB46B9C77FAACEB9C7E0310F35BD098AC6D6966A6A8F1E9FF7503D3B6ADC5F3B58F'
    $VU &= '89A7EDA6B2AA6487EEBE71346F320879F6C6DB03FBE2F8759F448B529421C69A386D1105BE99372CE54C997D1074F40B49BB6956D3A31186110E8D48C67C631C1FB399EB0A1E31107C79B872F5F3EEE5'
    $VU &= 'F96580B745713A4C8508C51D9B9157146F6F839887D7D161293A79BF1227095DE91A86A8905B4559136EB898B91B28852131A0C47BA85D8AD5182D6A106369DCE48C05D467CCCFD5451963107CA10FDF'
    $VU &= '6DC7FAC3F3DB10CF2FF5C2B32D5709628486BBDED55A7DFD77D0C3F3657D19A12FFF97034DAB94677E9BB64DE3D3B84554D1F4D5F79BFA86FE503BE8AFF7ADD45A9E47AF0F7FC0B52E4E17FBBC9A4E57'
    $VU &= '67FBE22DEAC99FA2E6D66139F5C15F82B2D1E5A1D8594DFC4F2B75B0E2200C840178BAD968C95BECB173E9250F995457E9D18ABE532D4A24CC40DFA4B1746F6D6060BFF39F7F0602534AFDA6D73FA887'
    $VU &= '2EC27B1CC357889A4847770AD1C07B5577ACF673B9DD0BB16B333AF076B4DF452D34DF9B03D9AE6FE1933644B79C364E07864F78DC0F74BC9CE7A29652A3F200AC5435588994A6CAAEA8197278894F4B'
    $VU &= '3E660857AB69AB156E81E6F583889D00A6B8A205003CE4B1310C597EAB08B43E4B45B06FFFE6FB49C6C3BFF39314240FFB2BE73850E508D20000000049454E44AE426082'
    Return $VU
    EndFunc

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

    Func VU_Fragement_Image()
    Local $VU_Fragment = '0x89504E470D0A1A0A0000000D49484452000000350000001E0803000000BB53A6B7000000AE504C54450000003030302828281010104040404848485050507878786060606868683838381818182C2C'
    $VU_Fragment &= '2C343434202020080808A8A8A88888889090907070705858588080807474744C4C4C7C7C7C5C5C5C6C6C6CB8B8B8B0B0B0646464D8D8D8F0F0F0E0E0E0ACACACC0C0C08484840C0C0CA4A4A41C1C1C8C'
    $VU_Fragment &= '8C8C545454040404A0A0A0E8E8E8E4E4E4D4D4D4C4C4C4D0D0D0C8C8C8B4B4B49898989C9C9CBCBCBCDCDCDCF4F4F4CCCCCCECECEC909898AA04C38C0000000174524E530040E6D8660000025D494441'
    $VU_Fragment &= '54785EC5D2D772DB381480611EF4CEDE49F52E773BC9EEFBBF58204AB1A954E52ADF053183C37F301C30F8E716094F1B2FE5C9E2C624910A0CBA30A0C4F68F49D72B64C05A75612D18A444F4DBA636C8'
    $VU_Fragment &= '2743342CF644F97037FF6554803927A4148DFFB054D6949C7B63E4CF9B9601395154F0CA076C2764517141143901FAB32862ACCEEA1DA1296F1841781586217684A5554349E647AC7CFD311292E7B9A0'
    $VU_Fragment &= 'B2AA894518DBBA6984D5D859DA577E3BCF2B295EBE8F6A99C79C31DE13A5DC8A46B3E9E7CFD35997F94C11C9CB5DB5CC9BEC3A9BD7324E522A39011FE97C36F591CFA67789DB28052517B448E2B43E8C'
    $VU_Fragment &= 'A285F091A05C808F904EEE8EFF4DCF8E77AF1B6715802CA84C62593F7F548DD8266C5711A7AC052D27B3E3BBD9A4D0A7FB7065C5B2642BE47BB4CD9631ED5340E021F37C3FFB7077DF5A37EC2B5E9749'
    $VU_Fragment &= '9CE597E8AD2E384D8543608C818D78987C9A7CBA984C264FCD661820D43434E65977AEB810AC2A351AC0267FB81F79BC7FDA3A40039DF13295CDE5E72B330E1AB98171F1E2F1CBC8E3E27F83CE438449'
    $VU_Fragment &= 'C576F57A388AF41C6177016ED93E5D691340EE424355D3F4E88F22A9D478A3379E7F02E2DDC362E4A1CB117C1B3BEC8A46754144F90E63FD0D06245EDBB791F62011E87718F74519943909F108426419'
    $VU_Fragment &= 'B5CFEFDA794C11C223615905DCECF19856A88FBBF9BC1BF8752B91D2786CAF82D57E752534609B388AD6D1D936550061B81A0B827D786DBF224609FE7258AF0FEBC34BD51344F0F72F053FC2042C13C5'
    $VU_Fragment &= '328E978560CA101DDC02138B2CA18C51A28CF5D16D56962830278A5A1CDC0C0319000EFE0ED6FA97C957E7B64B82E69A2ACC0000000049454E44AE426082'
    Return $VU_Fragment
    EndFunc

    [/autoit]

    Quellcode alleine läuft nicht, deshalb komplettes Paket hier herunterladen inkl. Exe Dateien: <CLICK ME > oder einfach den Link unten benutzen. :P

    Viel Spaß

    UEZ

    PS: ist noch im ßeta Stadium Finale Version

    Dateien

    Visualizer_Analog Meter+.7z 548,04 kB – 962 Downloads
  • GDI+ Beispiele

    • UEZ
    • 30. Januar 2009 um 22:22

    Habe ein weiteres Beispiel hinzugefügt: #06 - Sinus Laufschrift

    Guckst du Beitrag 1 ;)


    UEZ

  • Sin, Cos, Tan funktionieren nicht richtig

    • UEZ
    • 28. Januar 2009 um 19:14
    Zitat von FireFlyer

    UEZ also bei mir war das 9. Klasse ^^...

    Ich kann mich nicht mehr so richtig erinnern, aber angenommen, es war auch bei mir in der Neunten, dann was das 1985!

    UEZ

  • Sin, Cos, Tan funktionieren nicht richtig

    • UEZ
    • 28. Januar 2009 um 16:05

    AutoIt rechnet intern in Bogenmaß und dein Taschenrechner in Grad.

    Grad: 0° - 360°
    Bogenmaß: 0 - 2*Pi

    Es ist schon verdammt lang her, wo ich den Stoff in der Schule pauken musste :D

    Daraus folgt:
    Bogenmaß = Grad * PI / 180
    Grad = Bogenmaß * 180 / PI

    Gruß,
    UEZ

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™