Schau dir doch mal ein paar einfache Beispiele mit Backbuffering in GDI+ an ![]()
Beiträge von name22
-
-
Ähnelt dem was ich gestern geschrieben habe^^
Vielleicht sollte ich mir in Zukunft genauer anschauen wer einen Thread eröffnet
-
Vielleicht mit der Nomad Memory.au3, bin mir aber nicht sicher
-
Was soll er denn genau machen, wenn die rechte Maustaste gedrückt wurde? Ich hab das Spiel nicht, aber möchte auch helfen

-
Schönes Script, funktioniert gut. Aber ist das + 1 bei Global $aClients[$MAXCON + 1][3] im Server wirklich nötig? Im Grunde gibt doch $MAXCON die absolut maximale Anzahl an gleichzeitigen Verbindungen an, dann wären das doch am Ende 51 Verbindungen statt den 50 zugelassenen. Kann auch sein, dass ich bei der Arraygröße wieder mal durcheinander gekommen bin

-
Zitat
Beim FileRead() würde ich abr den count wegnehmen, dann sieht man auch mehr als nur das erste Zeichen.
Schau dir mal meinen Post genauer an
-
So besser? Bei mir funktioniert es jetzt.
Spoiler anzeigen
[autoit];====================================================
[/autoit] [autoit][/autoit] [autoit]
;=================== Textteditor ====================
;====================================================
; AutoIt version: 3.3.4.0
; Language: German
; Author: "black_skorpi"
;
; ---------------------------------------------------
; Script Start
; ---------------------------------------------------#Include <File.au3>
[/autoit]
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#Region ### START Koda GUI section ### Form=C
$DateiErstellen = GUICreate("Datei Erstellen", 354, 225, 192, 130)
$Editor = GUICtrlCreateEdit("", 10, 10, 332, 190)
$Dateiname = GUICtrlCreateLabel("Dateiname:", 5, 205, 59, 15)
$NameBox = GUICtrlCreateInput("",60, 205, 92, 15)
$Endung = GUICtrlCreateLabel("Endung:", 158, 205, 40, 15)
$EndungBox = GUICtrlCreateInput("", 200, 205, 30, 15)
$SpeichernButton = GUICtrlCreateButton("Speichern", 235, 202, 62, 21, $WS_GROUP)
$OeffnenButton = GUICtrlCreateButton("Öffnen", 300, 202, 50, 21, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $SpeichernButton
$NameAuslesen = GUICtrlRead($NameBox)
$EndungAuslesen = GUICtrlRead($EndungBox)
$TextAuslesen = GUICtrlRead($Editor)
_FileCreate($NameAuslesen & "." & $EndungAuslesen)
$file = FileOpen(@ScriptDir & ".\" & $NameAuslesen & "." & $EndungAuslesen,1)
FileWrite($file, $TextAuslesen)
FileClose($file)
Case $OeffnenButton
$NameAuslesen = GUICtrlRead($NameBox)
$EndungAuslesen = GUICtrlRead($EndungBox)
GUICtrlSetData($Editor, FileRead(".\" & $NameAuslesen & "." & $EndungAuslesen)) ;<-- ,1 war falsch
EndSwitch
WEnd -
Ich weiß nicht was du hast, bei mir funktioniert das Script. Und wenn du sagst: "geht iwie nicht", unterstützt mich das nicht bei der Fehlersuche.
-
Dann bleibt die .htm aber lokal und ist auch nicht ganz Funtionstüchtig aufgrund fehlender Grafiken etc.
Was spricht dagegen google.de über eine URL einzubinden?
Edit: Ach so meinst du das^^. Was klappt denn bei IniRead nicht? Versuch doch mal dir relevante Variablen in einer MsgBox ausgeben zu lassen, vielleicht findest du so selbst den Fehler. -
Du musst bei $var auch eine URL angeben und keinen Quelltext oder Ähnliches. Ich weiß nicht, ob man einen lokalen Dateipfad statt einer URL verwenden kann, aber wozu das ganze in eine .ini packen wieso nicht wie für gewöhnlich in eine .htm?
-
Es gibt auch EnvGet und EnvSet um Umgebungsvariablen zu setzen, über die 2 Autoit Prozesse miteinander kommunizieren können.
-
Aber bei Scripts mit aufwendigeren Berechnungen o.Ä. lässt eher die Geschwindigkeit von AutoIt nach.
-
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>Global $iX1 = 100
[/autoit] [autoit][/autoit] [autoit]
Global $iY1 = 320
Global $Speed = 2$hWnd = GUICreate("Game", 625, 443)
[/autoit] [autoit][/autoit] [autoit]
GUISetState()_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
[/autoit] [autoit][/autoit] [autoit]
$hBitmap = _GDIPlus_BitmapCreateFromGraphics(625, 443, $hGraphic)
$hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
;~ _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)
_GDIPlus_GraphicsClear($hGraphic)$Brush_Green = _GDIPlus_BrushCreateSolid(0xFF00FF00)
[/autoit] [autoit][/autoit] [autoit]AdlibRegister("_Redraw", 20)
[/autoit] [autoit][/autoit] [autoit]HotKeySet("{LEFT}", "_WalkLeft")
[/autoit] [autoit][/autoit] [autoit]
HotKeySet("{RIGHT}", "_WalkRight")
HotKeySet("{UP}", "_WalkUp")
HotKeySet("{DOWN}", "_WalkDown")While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
AdlibUnRegister()
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_GraphicsDispose($hBuffer)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_BrushDispose($Brush_Green)
_GDIPlus_Shutdown()
Exit
EndSwitch
WEndFunc _Redraw()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsClear($hBuffer, 0xFFF0F0F0)
_GDIPlus_GraphicsFillRect($hBuffer, 72, 56, 356, 297, $Brush_Green)
_GDIPlus_GraphicsFillRect($hBuffer, 424, 56, 140, 113, $Brush_Green)
_GDIPlus_GraphicsFillRect($hBuffer, $iX1, $iY1, 12, 20)
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, 625, 443)
EndFuncFunc _WalkLeft()
[/autoit] [autoit][/autoit] [autoit]
$iX1 -= $Speed
EndFuncFunc _WalkRight()
[/autoit] [autoit][/autoit] [autoit]
$iX1 += $Speed
EndFuncFunc _WalkUp()
[/autoit] [autoit][/autoit] [autoit]
$iY1 -= $Speed
EndFuncFunc _WalkDown()
[/autoit]
$iY1 += $Speed
EndFuncEdit: Mit Colloisions:
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>
#include <Misc.au3>$dll = DllOpen("user32.dll")
[/autoit] [autoit][/autoit] [autoit]Global $iX1 = 100
[/autoit] [autoit][/autoit] [autoit]
Global $iY1 = 320
Global $Speed = 2Global $MinX = 72
[/autoit] [autoit][/autoit] [autoit]
Global $MaxX = 72 + 356 - 12
Global $MinY = 56
Global $MaxY = 56 + 297 - 20$hWnd = GUICreate("Game", 625, 443)
[/autoit] [autoit][/autoit] [autoit]
GUISetState()_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
[/autoit] [autoit][/autoit] [autoit]
$hBitmap = _GDIPlus_BitmapCreateFromGraphics(625, 443, $hGraphic)
$hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
;~ _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)
_GDIPlus_GraphicsClear($hGraphic)$Brush_Green = _GDIPlus_BrushCreateSolid(0xFF00FF00)
[/autoit] [autoit][/autoit] [autoit]AdlibRegister("_Redraw", 35)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
AdlibUnRegister()
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_GraphicsDispose($hBuffer)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_Shutdown()
Exit
EndSwitch
If _IsPressed("25", $dll) Then _WalkLeft()
If _IsPressed("26", $dll) Then _WalkUp()
If _IsPressed("27", $dll) Then _WalkRight()
If _IsPressed("28", $dll) Then _WalkDown()
WEndFunc _Redraw()
[/autoit] [autoit][/autoit] [autoit]
If $iX1 > 72 + 356 - 12 Then
$MaxY = 56 + 113 - 20
Else
$MaxY = 56 + 297 - 20
EndIf
If $iY1 < 56 + 113 - 20 Then
$MaxX = 72 + 356 + 140 - 12
Else
$MaxX = 72 + 356 - 12
EndIf
_GDIPlus_GraphicsClear($hBuffer, 0xFFF0F0F0)
_GDIPlus_GraphicsFillRect($hBuffer, 72, 56, 356, 297, $Brush_Green)
_GDIPlus_GraphicsFillRect($hBuffer, 424, 56, 140, 113, $Brush_Green)
_GDIPlus_GraphicsFillRect($hBuffer, $iX1, $iY1, 12, 20)
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, 625, 443)
EndFuncFunc _WalkLeft()
[/autoit] [autoit][/autoit] [autoit]
If $iX1 > $MinX Then $iX1 -= $Speed
EndFuncFunc _WalkRight()
[/autoit] [autoit][/autoit] [autoit]
If $iX1 < $MaxX Then $iX1 += $Speed
EndFuncFunc _WalkUp()
[/autoit] [autoit][/autoit] [autoit]
If $iY1 > $MinY Then $iY1 -= $Speed
EndFuncFunc _WalkDown()
[/autoit]
If $iY1 < $MaxY Then $iY1 += $Speed
EndFunc -
Ich würde das ja mit GDI+ machen

-
Naja ich hab ein sehr einfaches Spiel in meiner Signatur, ansonsten wirst du hier (wahrscheinlich) keine Anleitungen sondern nur Beispiele dazu finden.
Am besten schaust du dir die Beispiele von UEZ an
-
Die erwähnte "Langsamkeit" von GDI+ hängt wohl mehr mit Autoit zusammen.
Der Exit Button wird von GDI+ einfach übermalt, wenn du das meinst. Ich würde sowieso eher mit Adlib Funktionen arbeiten. -
Ob das mit dem Alphakanal zusammenhängt?
Auf jeden Fall hängt das Problem damit zusammen, dass du _GDIPlus_GraphicsClear() verwndest
.
Schau dir mal die Clock.au3 in den Beispielscripts an, da funktionierts. -
Stimmt eigentlich
Aber im Grunde war das ja genau das was er verlangt hat.
-
Zitat
closed source brauch ich nicht...

Falls du mich meinst, Deepred hat gepostet, dass er auf Anfrage Teile seines Scriptes gerne zur Verfügung stellt. Soweit ich das verstanden habe möchte er nur nicht, dass irgendein Vollidiot sein Script klaut oder es zu 90% kopiert und seinen Namen darüberschreibt. -
Ich würde sagen ein Paradebeispiel ist das Desktop Radio von Deepred.