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

  • GDI+ Simple Flame Simulation build 2016-01-20

    • UEZ
    • 21. Januar 2016 um 22:21

    Vielen Dank für die Rückmeldungen. :thumbup:

  • Gelegentliches Flackern bei Neuzeichnen - abstellbar?

    • UEZ
    • 20. Januar 2016 um 23:04

    Probiere es mal damit:

    AutoIt
    #include <WinAPI.au3>
    #include <WinAPIGdi.au3>
    #include <Timers.au3>
    #include <WindowsConstants.au3>
    #include <FontConstants.au3>
    #include <StaticConstants.au3>
    
    
    
    
    Global Const $__TIMER_INTERVALL = 100
    
    
    Global $iWidth = 400, $iHeight = 300
    Global $aVertex[2][3] = [[0, 0, 0xA7BED7], [$iWidth, $iHeight, 0xF7F7F7]]
    
    
    $hGui = GUICreate('Test', $iWidth, $iHeight)
    ;~ $idPic = GUICtrlCreatePic('', 0, 0, $iWidth, $iHeight)
    ;~ $hPic = GUICtrlGetHandle($idPic)
    
    
    _ManageText('set', 'Nachricht', 'Das ist irgendein beliebiger Text' & @LF & 'die zweite Zeile des Textes')
    $iTimerID = _Timer_SetTimer($hGui, $__TIMER_INTERVALL, '_TimerCallback')
    
    
    GUISetState(@SW_SHOW)
    
    
    While 1
    	Switch GUIGetMsg()
    		Case -3
    			_Timer_KillTimer($hGui, $iTimerID)
    			Exit
    	EndSwitch
    WEnd
    
    
    Func _Time()
    	Return StringFormat('%02i:%02i:%02i.%s', @HOUR, @MIN, @SEC, StringLeft(@MSEC,1))
    EndFunc
    
    
    Func _ManageText($sAction='get', $sTextA='', $sTextB='')
    	Local Static $aText[2] = ['','']
    	If $sAction = 'get' Then Return $aText
    	If $sTextA <> '' Then $aText[0] = $sTextA
    	If $sTextB <> '' Then $aText[1] = $sTextB
    EndFunc
    
    
    Func _TimerCallback($hWnd, $iMsg, $iIDTimer, $iTime)
        #forceref $hWnd, $iMsg, $iIDTimer, $iTime
    	Local Static $aText[2] = ['','']
    	Local $aNewText = _ManageText('get')
    	For $i = 0 To 1
    		If $aText[$i] <> $aNewText[$i] Then
    			$aText[$i] = $aNewText[$i]
    		EndIf
    	Next
    	Local $sTime = _Time()
    
    
    	; Gradient
    	Local $hDC = _WinAPI_GetDC($hWnd)
    	Local $hBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $iWidth, $iHeight)
    	Local $hDestDC = _WinAPI_CreateCompatibleDC($hDC)
    	Local $hDestSv = _WinAPI_SelectObject($hDestDC, $hBitmap)
    	_WinAPI_GradientFill($hDestDC, $aVertex)
    
    
    	; Font
    	Local $hFont = _WinAPI_CreateFont(16, 0, 0, 0, 600, False, False, False, $DEFAULT_CHARSET, _
    			$OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Microsoft Sans Serif')
    	Local $hOldFont = _WinAPI_SelectObject($hDestDC, $hFont)
    
    
    	; Text 1
    	_WinAPI_SetTextColor($hDestDC, 0x800000)
    	_WinAPI_SetBkMode($hDestDC, $TRANSPARENT)
    	Local $tRECT = DllStructCreate($tagRect)
    	DllStructSetData($tRECT, "Left", 15)
    	DllStructSetData($tRECT, "Top", 5)
    	DllStructSetData($tRECT, "Right", 100)
    	DllStructSetData($tRECT, "Bottom", 30)
    	_WinAPI_DrawText($hDestDC, $aText[0], $tRECT, BitOR($DT_VCENTER,$DT_LEFT,$DT_SINGLELINE))
    
    
    	; Time
    	$tRECT = DllStructCreate($tagRect)
    	DllStructSetData($tRECT, "Left", $iWidth-90)
    	DllStructSetData($tRECT, "Top", 5)
    	DllStructSetData($tRECT, "Right", $iWidth-15)
    	DllStructSetData($tRECT, "Bottom", 30)
    	_WinAPI_DrawText($hDestDC, $sTime, $tRECT, BitOR($DT_VCENTER,$DT_RIGHT,$DT_SINGLELINE))
    
    
    	; Trennline
    	Local $hPen = _WinAPI_CreatePen($PS_SOLID, 1, 0x800000)
    	Local $oOld = _WinAPI_SelectObject($hDestDC, $hPen)
    	_WinAPI_DrawLine($hDestDC, 3, 30, $iWidth-6, 30)
    
    
    	; Text 2
    	$hFont = _WinAPI_CreateFont(16, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, _
    			$OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Microsoft Sans Serif')
    	_WinAPI_SelectObject($hDestDC, $hFont)
    	_WinAPI_SetTextColor($hDestDC, 0x400000)
    	$tRECT = DllStructCreate($tagRect)
    	DllStructSetData($tRECT, "Left", 0)
    	DllStructSetData($tRECT, "Top", 40)
    	DllStructSetData($tRECT, "Right", $iWidth)
    	DllStructSetData($tRECT, "Bottom", 280)
    	_WinAPI_DrawText($hDestDC, $aText[1], $tRECT, $DT_CENTER)
    
    
    	_WinAPI_BitBlt($hDC, 0, 0, $iWidth, $iHeight, $hDestDC, 0, 0, $SRCCOPY)
    
    
    	; Gradient to control
    ;~ 	_WinAPI_DeleteObject(GUICtrlSendMsg($idPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hBitmap))
    ;~ 	_SendMessage($hPic, $STM_SETIMAGE, 0, $hBitmap)
    ;~ 	Local $hObj = _SendMessage($hPic, $STM_GETIMAGE)
    ;~ 	If $hObj <> $hBitmap Then _WinAPI_DeleteObject($hBitmap)
    
    
    	_WinAPI_SelectObject($hDestDC, $hOldFont)
    	_WinAPI_SelectObject($hDestDC, $oOld)
    	_WinAPI_DeleteObject($hFont)
    	_WinAPI_DeleteObject($hPen)
    	_WinAPI_SelectObject($hDestDC, $hDestSv)
    ;~ 	_WinAPI_ReleaseDC($hPic, $hDC)
    	_WinAPI_DeleteDC($hDestDC)
    	_WinAPI_DeleteObject($hBitmap)
    
    
    
    
    	; Neuzeichnen
    ;~ 	GUISetState(@SW_UNLOCK)
    ;~ 	_WinAPI_RedrawWindow($hWnd, 0, 0, BitOR($RDW_NOINTERNALPAINT, $RDW_UPDATENOW))
    ;~ 	GUISetState(@SW_LOCK)
    EndFunc
    Alles anzeigen
  • GDI+ Simple Flame Simulation build 2016-01-20

    • UEZ
    • 20. Januar 2016 um 01:28

    Da ich mich gerade in einer kreativen Phase befinde, hier noch ein weiteres kleines GDI+ Skript.


    Screenshot.jpg


    Vielen Dank an Eukalyptus für die GDIPlusEx UDF! :rock:

    So, das war's für diese Nacht. :sleeping:

    Viel Spaß beim Zuschauen...

    Dateien

    Simple Flame Sim. v1.1.1.au3 81,68 kB – 556 Downloads
  • [GDI+] Asteroiden Generator

    • UEZ
    • 18. Januar 2016 um 23:22

    Jetzt könnte man die Punkte mit der Warp Funktion von Eukalyptus mit Texturen versehen. Das hatte ich bereits nach dem Sphere Outro vor, ist aber in Vergessenheit geraten.

    So könnte man z.B. eine rotierende Weltkugel darstellen.

  • 2D Array erstellen

    • UEZ
    • 14. Januar 2016 um 16:26

    Für _FileReadToArray musst du noch den "Delimiter" angeben -> ";" (siehe Help File, letzter Parameter).

  • 2D Array erstellen

    • UEZ
    • 14. Januar 2016 um 16:18

    Teste doch mal

    AutoIt
    _FileReadToArray

    Oder alternativ: https://www.autoitscript.com/forum/topic/155748-csvsplit

  • [GDI+] Asteroiden Generator

    • UEZ
    • 12. Januar 2016 um 23:27

    Es wäre cool, wenn du noch ein Bump Mapping Effekt hinzufügen würdest -> Code Beispiel in C/C++



    Dann sieht es gleich noch besser aus. ^^

  • Laufzeit Dienststatusabfrage

    • UEZ
    • 8. Januar 2016 um 23:58

    Win 8.1 x64:

    Code
    Ergebnis: CMD False t=0.512 s 	 WMI 0 t=1.298 s
    Ergebnis: CMD False t=0.325 s 	 WMI 0 t=0.310 s
    Ergebnis: CMD False t=0.324 s 	 WMI 0 t=0.277 s
    Ergebnis: CMD False t=0.322 s 	 WMI 0 t=0.322 s
    Ergebnis: CMD False t=0.310 s 	 WMI 0 t=0.316 s
  • Inputbox immer nach Knopfdruck aktualisieren.

    • UEZ
    • 8. Januar 2016 um 23:37
    Zitat von hajoh25

    While 1
    Sleep(100)
    WEnd

    Wie soll das Programm in Zeile 74-76 aus der Endlosschleife denn raus?

    GUISetOnEvent kann nur einmal ausgeführt werden und diese Schleife blockiert die Anweisung GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close") in Zeile 15, da GUICtrlSetOnEvent($Button1, "Durchsuchen") bereits läuft.

    Du könntest zwar

    AutoIt
    HotKeySet("{ESC}", "Form1Close")

    benutzen, aber sehr unschön das Ganze.

  • Bestimmtes Bit im Hex-Wert auf 1 setzten

    • UEZ
    • 5. Januar 2016 um 18:18

    Warum StringToBinary?

    AutoIt
    $a = 0x563 	; 				0x563 = 1379 = 10101100011
    $b = 0x80	; 				0x80 = 128 =      10000000
    $res = BitOR($a, $b) ; -> 	0x5E3 = 1507 = 10111100011
    MsgBox(4096, "Result", Int($res))
  • Wiederherstellungspartition löschen?

    • UEZ
    • 1. Januar 2016 um 14:41

    Eventuell hilft dir http://gparted.org, deine Partitionen zu bearbeiten. Notfalls kann du mit der Windows DVD den Bootsektor neu erstellen.

  • GDI+ Simple Firework mit Sound Effekten

    • UEZ
    • 30. Dezember 2015 um 21:25
    Zitat von Oscar

    Mit Sleep(0) sind es:
    1920 x 1200 = 36 FPS
    1024 x 768 = 50 FPS

    Aha, jetzt passt's eher. ;)

    Zitat von autoiter

    Ich muss dazu sagen, dass ich auch einen Desktop PC nutze..
    Die 23 FPS habe ich hier bei einer Auflösung von 1920x1080.

    Um so schlimmer, dass dein i3 bei höherer Auflösung schneller ist. :huh:


    Zitat von Oscar

    Wenn Du vor dem Aufruf der GUI noch eine GUI (ganz schwarz) in den Hintergrund setzt, dann sieht das noch besser aus, weil man nicht irgendeinen Desktopkram halbtransparent sieht.
    Also so:

    AutoIt
    Func GDIPlus_SimpleFirework()
    	$bExit = False
    	$hMainGUI = GUICreate('', $iW, $iH, 0, 0, $WS_POPUP)
    	GUISetState(@SW_SHOW, $hMainGUI)
    	$hGUI = GUICreate($sTitle & 0, $iW, $iH, 0, 0, $WS_POPUP, Default, $hMainGUI)
    	GUISetState(@SW_SHOW, $hGUI)
    	WinSetTrans($hGUI, "", 0xED)
    	GUISetCursor(16, 1)
    [...]

    Mir persönlich gefällt es mit der durchsichtigen GUI besser. ^^

    Du musst aber keine zweite GUI erstellen, sondern nur WinSetTrans abschalten und $hBrush_Txt neusetzen, z.B. den Pinsel auf 0x10303030 setzen.

  • GDI+ Simple Firework mit Sound Effekten

    • UEZ
    • 30. Dezember 2015 um 14:58
    Zitat von Oscar

    Ich musste gerade feststellen, dass die Framerate ja auch auflösungsabhängig ist.
    Also mein Wert (27 FPS) bezieht sich auf eine Desktop-Auflösung von 1920 x 1200 Pixel.
    Bei z.B. 1024 x 768 Pixel schafft mein Rechner 34 FPS.

    Danke Oscar, natürlich müssen wir die Auflösung mit einkalkulieren, sonst sind die Vergleiche nicht richtig. :thumbup:

    Meine 19 FPS werden bei einer Auflösung von 1600x900 Pixel erreicht.

    UEZ: 1600 * 900 * 19 = 27360000
    Oscar: 1920 * 1200 * 27 = 62208000

    @Oscar: kannst du bitte nochmals mit 1024x768 testen und Sleep(0) setzen? 34 FPS scheinen mir ein bissl wenig.

  • GDI+ Simple Firework mit Sound Effekten

    • UEZ
    • 30. Dezember 2015 um 12:15
    Zitat von autoiter

    Bei mir läuft es mit knapp 23 FPS. Ich habe einen Core i3-4130.

    Krass, dein i3 ist schneller als mein i5.

    Zitat von Andy

    Durchschnitt jetzt auf 18 fps, incl. Sound.
    Das aber nur, wenn "von Hand" auf volle Leistung gestellt wird. Ist der Energiesparmodus eingestellt, fällt der Takt von 2,3 auf 0,7 Ghz und die fps dann entsprechend.
    GDI ist keine Anwendung, um einen modernen Prozessor aus dem Tiefschlaf zu holen...

    Im Akkubetrieb läuft das Skript aus meinem Notebook so etwa mit 10 FPS. In den Energieinstellungen kann man das ändern und der CPU max. Power geben, wenn man will.

  • Kontextmenü funktioniert nicht / nicht mit allen Buttons

    • UEZ
    • 29. Dezember 2015 um 23:22
    Zitat von Eistee

    Wow, ja so gehts aber jetzt wählt er den $button3 als button2, also immer 1 links 2 rechts usw. kann man das noch anpassen oder muss ich die Button variablen umbenennen am besten ?

    Wie meinst du das?

  • Kontextmenü funktioniert nicht / nicht mit allen Buttons

    • UEZ
    • 29. Dezember 2015 um 23:06

    Sowas hier?

    AutoIt
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Clipboard.au3>
    #include <SendMessage.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <StructureConstants.au3>
    #include <GuiEdit.au3>
    #Include <WinAPI.au3>
    #include <ScrollBarsConstants.au3>
    #include <SliderConstants.au3>
    
    
    Global $NSound = 1
    
    
    
    
    $Form1 = GUICreate("Sounds", 442, 453, -1, -1)
    
    
    $Group1 = GUICtrlCreateGroup("", 4, 4, 265, 443)
    
    
    Global $aCtrl[30][3]
    For $i = 0 To UBound($aCtrl) - 1 Step 2
    	$aCtrl[$i][0] = GUICtrlCreateButton("Sound Wählen", 8, 22 + $i * 14, 125, 25)
    	$aCtrl[$i][1] = GUICtrlCreateContextMenu($aCtrl[$i][0])
    	$aCtrl[$i][2] = GUICtrlCreateMenuitem("Sound " &  $i + 1 & " wählen", $aCtrl[$i][1])
    	$aCtrl[$i + 1][0] = GUICtrlCreateButton("Sound Wählen", 135, 22 + $i * 14, 125, 25)
    	$aCtrl[$i + 1][1] = GUICtrlCreateContextMenu($aCtrl[$i + 1][0])
    	$aCtrl[$i + 1][2] = GUICtrlCreateMenuitem("Sound " &  $i + 2 & " wählen", $aCtrl[$i + 1][1])
    Next
    
    
    $Group2 = GUICtrlCreateGroup("", 270, 116, 167, 135)
    
    
    $Slider1 = GUICtrlCreateSlider(280, 132, 150, 35)
    $Label1 = GUICtrlCreateLabel("Volume : ", 316, 171, 48, 17)
    $Label2 = GUICtrlCreateLabel("100 %", 365, 171, 33, 17)
    $Button31 = GUICtrlCreateButton("How To", 316, 188, 75, 25)
    
    
    
    
    $Checkbox1 = GUICtrlCreateCheckbox("Sound", 302, 224, 97, 17)
    GUICtrlSetState ( $Checkbox1, $GUI_CHECKED)
    $Button32 = GUICtrlCreateButton("Open Youtube", 276, 252, 159, 25)
    
    
    GUISetState(@SW_SHOW, $Form1)
    
    
    
    
    #Region
    $FormCSB1 = GUICreate(" ", 191, 81, -1, -1)
    $LabelCSB1 = GUICtrlCreateLabel("Sound von Button 1", 46, 4, 99, 17)
    $InputCSB1 = GUICtrlCreateInput("Bitte MP3 auswählen", 2, 26, 147, 21)
    $ButtonSoundCSB1 = GUICtrlCreateButton("...", 152, 24, 31, 25)
    $ButtonCSB1 = GUICtrlCreateButton("Bestätigen", 58, 54, 75, 25)
    GUISetState(@SW_HIDE, $FormCSB1)
    #EndRegion
    
    
    
    
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			Exit
    		Case $Button32
    			_Youtube ()
    		Case $Checkbox1
    			If _IsChecked($Checkbox1) Then
    				;checked
    			Else
    				;not
    			EndIf
    	EndSwitch
    
    
    	If $nMsg <> 0 Then
    		$iPos = _ArraySearch($aCtrl, $nMsg, 0, 0, 0, 0, 1, 2)
    		If $iPos > -1 Then
    			MsgBox(0, "Test", "Sound " & $iPos + 1 & " wurde ausgewählt")
    		EndIf
    	EndIf
    WEnd
    
    
    
    
    Func _Test ()
    	MsgBox(0,"","")
    	;GUISetState(@SW_Show, $FormCSB1)
    EndFunc
    
    
    Func _Youtube ()
    ShellExecute("http://www.youtube.de")
    EndFunc
    
    
    Func _IsChecked($idControlID)
        Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED
    EndFunc
    Alles anzeigen
  • Bild in eine GUI einfügen

    • UEZ
    • 29. Dezember 2015 um 22:36

    In eine MsgBox nicht, du müsstest die MsgBox als GUI nachbauen.

  • GDI+ Simple Firework mit Sound Effekten

    • UEZ
    • 29. Dezember 2015 um 22:17

    Vielen Dank für die Rückmeldungen.

    Dieses "von...bis" hat mir nicht gefallen, also habe ich noch ein durchschnittliche FPS Kalkulation eingebaut.

    Auf meinem Notebook pendelt sich die FPS auf ca. 19 FPS ein.

  • GDI+ Simple Firework mit Sound Effekten

    • UEZ
    • 29. Dezember 2015 um 18:24
    Zitat von Oscar

    Sieht gut aus! :klatschen:

    Bei mir läuft es mit 25 - 33 FPS (Intel Core i5-4690 @ 3.50 GHz).

    Müsste ja richtig "geschmeidig" bei dir laufen... :thumbup:

    Unter 15 FPS macht's leider keinen Spaß zuzuschauen.

  • GDI+ Simple Firework mit Sound Effekten

    • UEZ
    • 29. Dezember 2015 um 15:46

    Danke euch beiden für euer Feedback. :rolleyes:

    Mit wie vielen FPS läuft das Skript bei euch? Welche CPU?

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™