Vielen Dank für die Rückmeldungen. ![]()
Beiträge von UEZ
-
-
Probiere es mal damit:
AutoIt
Alles anzeigen#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 -
Da ich mich gerade in einer kreativen Phase befinde, hier noch ein weiteres kleines GDI+ Skript.
Vielen Dank an Eukalyptus für die GDIPlusEx UDF!

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

Viel Spaß beim Zuschauen...

-
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.
-
Für _FileReadToArray musst du noch den "Delimiter" angeben -> ";" (siehe Help File, letzter Parameter).
-
Teste doch mal
Oder alternativ: https://www.autoitscript.com/forum/topic/155748-csvsplit
-
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.

-
-
While 1
Sleep(100)
WEndWie 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
benutzen, aber sehr unschön das Ganze.
-
-
Eventuell hilft dir http://gparted.org, deine Partitionen zu bearbeiten. Notfalls kann du mit der Windows DVD den Bootsektor neu erstellen.
-
Mit Sleep(0) sind es:
1920 x 1200 = 36 FPS
1024 x 768 = 50 FPSAha, jetzt passt's eher.

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.

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: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.
-
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.

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.
-
Bei mir läuft es mit knapp 23 FPS. Ich habe einen Core i3-4130.
Krass, dein i3 ist schneller als mein i5.
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.
-
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?
-
Sowas hier?
AutoIt
Alles anzeigen#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 -
In eine MsgBox nicht, du müsstest die MsgBox als GUI nachbauen.
-
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.
-
Sieht gut aus!

Bei mir läuft es mit 25 - 33 FPS (Intel Core i5-4690 @ 3.50 GHz).
Müsste ja richtig "geschmeidig" bei dir laufen...

Unter 15 FPS macht's leider keinen Spaß zuzuschauen.
-
Danke euch beiden für euer Feedback.

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