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

Beiträge von chip

  • GDI+ Prozessorauslastung reduzieren

    • chip
    • 28. September 2011 um 09:54

    Mh bei anderen Scripten ohne GDI+ habe ich das nicht, darum dachte ich es liegt an GDI+

  • Kleinere Autoit EXE´N mitliefern

    • chip
    • 28. September 2011 um 09:37

    Genau das ist auch was mich etwas wundert, wo die Größernersparniss ist. In seinem Beispiel ist eine Input.au3 drin mit einer Größe von 9 Byte. Die Input.a3x die dabei ist hat aber eine größe von 357 Bytes, also ca. 40mal größer.

  • GDI+ Prozessorauslastung reduzieren

    • chip
    • 28. September 2011 um 09:34

    Also z.b. bei diesem hier ist es, bei einem AMD Athlon 64 X2 4600+ (2,4 GHz), bei 46 wenn die Maus nicht bewegt wird und 50 Prozent wenn die Maus bewegt wird:

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>

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

    Opt("GuiOnEventMode", 1)
    Opt("MouseCoordMode", 0)

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

    OnAutoItExitRegister("_end")

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

    $Gui = GUICreate("Beispiel", 800, 600)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
    GUISetState(@SW_SHOW)

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

    _GDIPlus_Startup()

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

    $chipset = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\chipsets\1.png")

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

    $graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
    $bitmap = _GDIPlus_BitmapCreateFromGraphics(800, 600, $graphic)
    $buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)

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

    ;~ _GDIPlus_GraphicsDrawImageRectRect($buffer, $chipset, 0, 0, 256, 1024, 672, 0, 128, 512)
    ;~ _GDIPlus_GraphicsDrawImageRectRect($buffer, $chipset, 0, 0, 256, 1024, 0, 515, 128 / 6, 512 / 6)
    ;~ _GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)
    ;~ _GDIPlus_GraphicsClear($buffer, 0xFF000000)

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

    $mouscordsalt = MouseGetPos()
    While 1
    $mouscords = MouseGetPos()
    If $mouscordsalt[0] <> $mouscords[0] Or $mouscordsalt[1] <> $mouscords[1] Then
    ;~ $mouscordsalt[0] = $mouscords[0]
    ;~ $mouscordsalt[1] = $mouscords[1]
    ;~
    ;~ If $mouscords[0] Or $mouscordsalt[1] <> $mouscords[1] Then
    _GDIPlus_GraphicsDrawImageRectRect($buffer, $chipset, 0, 0, 256, 1024, 672, 0, 128, 512)
    _GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)
    _GDIPlus_GraphicsClear($buffer, 0xFF000000)
    ;~ EndIf
    EndIf
    WEnd

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

    Func CLOSEClicked()
    Exit
    EndFunc ;==>CLOSEClicked

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

    Func _end()
    _GDIPlus_ImageDispose($chipset)
    _GDIPlus_GraphicsDispose($graphic)
    _GDIPlus_GraphicsDispose($buffer)
    _GDIPlus_BitmapDispose($bitmap)
    _GDIPlus_Shutdown()
    EndFunc ;==>_end

    [/autoit]
  • GDI+ Prozessorauslastung reduzieren

    • chip
    • 28. September 2011 um 09:21

    Damit verändert man ja die Renderqualität des Grafik-Objekts, das will ich allerdings nicht. Daher eher an irgendeinen Trick um z.b. GDI+ statt mit der CPU mit der GPU render zu lassen oder dergleiche.

  • GDI+ Prozessorauslastung reduzieren

    • chip
    • 28. September 2011 um 09:07

    Hi,

    gibt es irgendeinen Trick um die Prozessorauslastung durch GDI+ zu reduzieren?

    mfg

  • Kleinere Autoit EXE´N mitliefern

    • chip
    • 28. September 2011 um 08:23

    Also so ganz kapier ich auch nicht wie das gehen soll. Deine GenScript.au3 generiert eine CompileME.au3 und die CompileME.au3 eine OUT.exe.

    Die Out.exe hat wiederrum diesen Code wodruch sie sich selbst versucht zu öffnen:

    Spoiler anzeigen
    [autoit]

    DIM $AUTOITEXE_BYTES=646144,$AUTOITA3X_SCRIPT=""
    $AUTOITA3X_SCRIPT&=BINARYTOSTRING("")
    $AUTOITEXE=@SCRIPTFULLPATH
    $AUTOITEXE_OPEN=FILEOPEN($AUTOITEXE)
    $AUTOITEXE_READ=FILEREAD($AUTOITEXE_OPEN)
    $AUTOITEXE_BINARY=STRINGTRIMRIGHT($AUTOITEXE_READ,FILEGETSIZE($AUTOITEXE)-$AUTOITEXE_BYTES)
    FILECLOSE($AUTOITEXE_OPEN)
    $OUT_OPEN=FILEOPEN("OUT.exe",18)
    FILEWRITE($OUT_OPEN,$AUTOITEXE_BINARY&$AUTOITA3X_SCRIPT)
    FILECLOSE($OUT_OPEN)

    [/autoit]

    Weder kann man ein Script auswählen aus dem der a3x Code generiert werden soll, noch passiert sonst irgendetwas. Erklär das bitte nochmal genauer was da passieren sollte.

  • GDI+ globale Variable setzt sich zurück

    • chip
    • 27. September 2011 um 14:37

    Ach misst da hab ich doch glatt vergessen gehabt die raus zu machen. *lach* aber lieber so ein Fehler als was ernstes. Danke :).

  • Umwandeln von cmd Befehlen in Autoit

    • chip
    • 27. September 2011 um 13:50

    Wie gesagt mach das Tutorial durch und lernen die Grundlagen, vorher wird das nichts ;).

  • Prozesse schliessen die im Inifile gelistet sind

    • chip
    • 27. September 2011 um 13:49

    Mach es so:

    [autoit]

    $config = IniReadSection(@ScriptDir & "\UserInfo.ini", "Configuration")

    [/autoit]
  • Umwandeln von cmd Befehlen in Autoit

    • chip
    • 27. September 2011 um 13:39

    Klar, warum sollte es nicht gehen:

    Spoiler anzeigen
    [autoit]

    FileSetAttrib(@WindowsDir & "\Temp", "-R -S", 1)
    FileDelete(@WindowsDir & "\Temp")
    If Not FileExists(@WindowsDir & "\Temp") Then
    DirCreate(@WindowsDir & "\Temp")
    EndIf

    [/autoit]

    Nur ob das Sinn macht es 1 zu 1 von batch in Autoit zu portieren, bezweifel ich.

  • GDI+ globale Variable setzt sich zurück

    • chip
    • 27. September 2011 um 13:06

    Hi,

    habe ein, zumindestens für mich, seltsamens Problem. In folgendem Script lade ich zu beginn eine Bild in einer globale Variable:

    [autoit]

    Global $char = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\chars\1.png")

    [/autoit]

    aus dieem Bild werden dann in einer Funktion mit "_GDIPlus_GraphicsDrawImageRectRect" einzelnen Bereiche ausgeschnitten und vergößert dargestellt. Soweit so gut. Jetzt habe ich allerdings drin, dass wenn eine Variable einen bestimmten Wert erreicht ein anderes Bild in die globale Variable geladen werden soll:

    [autoit]

    If $charselectkordy == 64 Then
    $charselectkordy = 192
    Else
    $charselectkordy = 64

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

    $chardateicount = $chardateicount + 1
    $char = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\chars\" & $chardateicount & ".png")
    EndIf

    [/autoit]

    Und nun kommt das komische. Beim diekt drauffolgenden "_GDIPlus_GraphicsDrawImageRectRect" wird aus dem neuen Bild der Ausschnitt genommen. Beim nächsten aufrufen der Funktion allerdings wieder von dem alten obwohl das garnichtmehr in die Variable geladen wird.

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>

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

    Opt("GuiOnEventMode", 1)

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

    OnAutoItExitRegister("_end")

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

    $Gui = GUICreate("Form1", 320, 240)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
    $charselectleft = GUICtrlCreateLabel("", 80, 180, 34, 25, 0x0000000D)
    GUICtrlSetOnEvent($charselectleft, "charselectleft")
    $charselectright = GUICtrlCreateLabel("", 195, 180, 34, 25, 0x0000000D)
    GUICtrlSetOnEvent($charselectright, "charselectright")
    GUISetState(@SW_SHOW)

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

    $chardateien = _FileListToArray(@ScriptDir & "\chars")

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

    _GDIPlus_Startup()

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

    $graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
    $bitmap = _GDIPlus_BitmapCreateFromGraphics(320, 240, $graphic)
    $buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)

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

    Global $char = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\chars\1.png")
    $height = _GDIPlus_ImageGetHeight($char)
    $width = _GDIPlus_ImageGetWidth($char)

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

    $bk = _GDIPlus_ImageLoadFromFile("charselect.png")

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

    $changeright = _GDIPlus_ImageLoadFromFile("auswahlrechts.png")

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

    $changeleft = _GDIPlus_ImageLoadFromFile("auswahllinks.png")

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

    Global $charselectkordx = 0
    Global $charselectkordy = 0
    Global $chardateicount = 1
    _charchange($buffer, $bk, $char, $graphic, $bitmap)

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

    While 1

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

    WEnd

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

    Func charselectleft()
    _charchange($buffer, $bk, $char, $graphic, $bitmap, "left")
    EndFunc ;==>charselectleft

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

    Func charselectright()
    _charchange($buffer, $bk, $char, $graphic, $bitmap, "right")
    EndFunc ;==>charselectright

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

    Func CLOSEClicked()
    Exit
    EndFunc ;==>CLOSEClicked

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

    Func _charchange($buffer, $bk, $char, $graphic, $bitmap, $direction = "start")
    Switch $direction
    Case "start"
    $charselectkordx = 24
    $charselectkordy = 64
    Case "left"
    $charselectkordx = $charselectkordx - 72
    If $charselectkordx < 24 Then
    If $charselectkordy == 64 Then
    $charselectkordy = 192
    Else
    $charselectkordy = 64
    EndIf

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

    $charselectkordx = 240
    EndIf
    Case "right"
    $charselectkordx = $charselectkordx + 72
    If $charselectkordx > 240 Then
    If $charselectkordy == 64 Then
    $charselectkordy = 192
    Else
    $charselectkordy = 64

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

    $chardateicount = $chardateicount + 1
    $char = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\chars\" & $chardateicount & ".png")
    EndIf

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

    $charselectkordx = 24
    EndIf
    EndSwitch

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

    _GDIPlus_GraphicsDrawImageRect($buffer, $bk, 0, 0, 320, 240)
    _GDIPlus_GraphicsDrawImageRect($buffer, $changeleft, 80, 180, 34, 25)
    _GDIPlus_GraphicsDrawImageRect($buffer, $changeright, 195, 180, 34, 25)
    _GDIPlus_GraphicsDrawImageRectRect($buffer, $char, $charselectkordx, $charselectkordy, 24, 32, 120, 110, 24 * 3, 32 * 3)
    _GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)
    _GDIPlus_GraphicsClear($buffer, 0xFF000000)
    EndFunc ;==>_charchange

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

    Func _end()
    _GDIPlus_GraphicsDispose($graphic)
    _GDIPlus_GraphicsDispose($buffer)
    _GDIPlus_BitmapDispose($bitmap)
    _GDIPlus_ImageDispose($char)
    _GDIPlus_ImageDispose($bk)
    _GDIPlus_Shutdown()
    EndFunc ;==>_end

    [/autoit]
  • Umwandeln von cmd Befehlen in Autoit

    • chip
    • 27. September 2011 um 11:24
    Zitat von DeadAngel


    1. Ist es möglich dies auch in Autoit zu realisieren ohne das ich auf Batch dateien zugreifen muss? Ich hätte am ende gerne nur ein .exe File und bei Klick auf Button 2 wird auch das Programm 2 ausgeführt.

    Ja, Autoit ist wesentlich mächtiger als Batch

    Zitat von DeadAngel


    2. Gibt es die Möglichkeit eine Checkbox einzufügen in der ich die Auswahl "runas" habe? So das ich das dann als user oder als Admin ausführen kann?

    Auch ja. Schau dir am besten erstmal das Tutorial an: http://wiki.autoit.de/wiki/index.php/Tutorial

  • GDI+ _GDIPlus_GraphicsDrawImageRect on event?

    • chip
    • 27. September 2011 um 10:40

    Ay die Idee ist gut, hatte das die ganze Zeit versucht irgendie mit GUICtrlCreateButton zu machen, aber das sah bescheiden aus.

  • GDI+ _GDIPlus_GraphicsDrawImageRect on event?

    • chip
    • 27. September 2011 um 10:11

    Hi,

    gibt es eine Möglichkeit auf eine mit _GDIPlus_GraphicsDrawImageRect eingefügte grafik ein "OnEvent" zu legen um bei einem klick auf die Grafik eine Funktion aufzurufen oder muss man das über zum Fenster reletaive Mauscoords machen?

    mfg

  • Probleme beim Kompilieren

    • chip
    • 26. September 2011 um 22:56

    So hab dein Problem gelöst. Dein komischen ASCII-Sonderzeichen nach "Copyright by 2011" verhindert, dass beim compilen die Details entsprechend verändert werden.

  • GDI+ bestimmter Ausschnitt aus Grafik

    • chip
    • 26. September 2011 um 19:05

    Edit: Ok habs jetzt doch hinbekommen

  • GDI+ bestimmter Ausschnitt aus Grafik

    • chip
    • 26. September 2011 um 18:54

    Mh und wie? Da kann man doch nur die linke obere Ecke von Quelle und Ziel definieren.

  • GDI+ bestimmter Ausschnitt aus Grafik

    • chip
    • 26. September 2011 um 18:42

    Mh damit vergrößere bzw. verkleinerre ich ja aber nur einen ausschnitt und kann nicht irgedwo innerhalb des Quellbildes einen definierten Bereich auswählen.

  • GDI+ bestimmter Ausschnitt aus Grafik

    • chip
    • 26. September 2011 um 17:56

    Hi,

    ich habe folgende Grafik:

    [Blockierte Grafik: http://rpg2000.4players.de/chipsets/Fassade/AkteX.png]

    Diese würde ich nun gerne einmal mit _GDIPlus_ImageLoadFromFile oder so im mein Script einlegen und dann nur einen kleine Ausschnitt z.b. einen der Monitore "ausschneiden" und nur diesen Monitor zeichnen. Die höhe und breite der Ausgeschnittenen fläche ist immer gleich nur die Position von wo es ausgeschnitten wird ändert sich.

    Da ich mehrere Felder nacheinander in die gleiche Oberfläche zeichnen will ist der weg über alles andere schwarz machen leider nicht möglich. es müsste schon wirklich die gezeichnete Grafik dann die größe des ausgeschnittenen Bereiches haben.

    jemand eine Idee?

    mfg

  • GDI+ Bild wird gestaucht

    • chip
    • 26. September 2011 um 13:58

    Wohaaaa das ist ja optimal XD. Danke.

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™