WrittenLights-Projekt

09/13/2010 17:57 mipez#16
Das mit nur 1 For...Next resultiert aus meinem vorherigen Script... kA was mich da geritten hat xD
09/13/2010 20:44 | Moep |#17
Hier, scannt einen Desktopausschnitt und zeichnet dann 1:1 Pixel für Pixel nach. Zwar irgendwie nicht ganz farbecht, aber egal.

Code:
#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiConstantsEx.au3>
#include <WinAPI.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>

Opt('MustDeclareVars', 1)

_Main()

Func _Main()
	Local $hImage, $hGUI, $hDC, $a, $i, $k
	
	$hGUI = GUICreate("Imagelist: Bilder zeichnen", 100, 100, 100, 100,$WS_POPUP)
	GUISetState(@SW_HIDE)
	MsgBox("", "", "scan start")
	$hImage = _GUIImageList_Create(1, 1, "", "", "")
	For $i = 100 to 200
		For $k = 100 to 200
			_GUIImageList_Add($hImage, _WinAPI_CreateSolidBitmap($hGUI, PixelGetColor($i, $k), 1, 1))
		Next
	Next
	MsgBox("", "", "scan complete")
	
	GUISetState(@SW_SHOW)
	$hDC = _WinAPI_GetDC($hGUI)

	$a = 0
	For $i = 0 to 100 step 1
		For $k = 0 to 100 step 1
			_GUIImageList_Draw($hImage, $a, $hDC, $i, $k)
			$a = $a + 1
		Next
	Next

	_WinAPI_ReleaseDC($hGUI, $hDC)

	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE
	GUIDelete()
EndFunc   ;==>_Main

Falls du es vergrößert haben willst, hier is die pixelgröße 2x2.

Code:
#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiConstantsEx.au3>
#include <WinAPI.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>

Opt('MustDeclareVars', 1)

_Main()

Func _Main()
	Local $hImage, $hGUI, $hDC, $a, $i, $k
	
	$hGUI = GUICreate("Imagelist: Bilder zeichnen", 200, 200, 50, 50,$WS_POPUP)
	GUISetState(@SW_HIDE)
	MsgBox("", "", "scan start")
	$hImage = _GUIImageList_Create(2, 2, "", "", "")
	For $i = 100 to 200
		For $k = 100 to 200
			_GUIImageList_Add($hImage, _WinAPI_CreateSolidBitmap($hGUI, PixelGetColor($i, $k), 2, 2))
		Next
	Next
	MsgBox("", "", "scan complete")
	
	GUISetState(@SW_SHOW)
	$hDC = _WinAPI_GetDC($hGUI)

	$a = 0
	For $i = 0 to 200 step 2
		For $k = 0 to 200 step 2
			_GUIImageList_Draw($hImage, $a, $hDC, $i, $k)
			$a = $a + 1
		Next
	Next

	_WinAPI_ReleaseDC($hGUI, $hDC)

	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE
	GUIDelete()
EndFunc   ;==>_Main



__________________
Edit:
Lol, hier hab ich noch was gefunden, ist aber diesmal nicht von mir, vielleicht kannsts ja gebrauchen.
[Only registered and activated users can see links. Click Here To Register...]
Code:
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#Include <GDIPlus.au3>

_GDIPlus_Startup ()

$hDC = _WinAPI_GetWindowDC(0)

$hGraphic = _GDIPlus_GraphicsCreateFromHDC($hDC)
$Color = 0xFF000000
$hPen = _GDIPlus_PenCreate($Color,2)


For $y = 0 to 300
    For $x = 0 to @DesktopWidth Step 5
        _GDIPlus_GraphicsDrawLine($hGraphic, @DesktopWidth/2, 0, $x, @DesktopHeight, $hPen)
        $Color += Hex(2)
        _GDIPlus_PenSetColor($hPen, $Color)
    Next
Next
Sleep(5000)

_WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, $RDW_INVALIDATE+$RDW_ALLCHILDREN)
_WinAPI_ReleaseDC(0, $hDC)
_GDIPlus_Shutdown()
09/13/2010 21:47 mipez#18
Mich würde mal interessieren ob man DirectX in AutoIt einbinden kann... zusammen mit den obigen Funktionen könnte man die Geschwindigkeit enorm steigern...
Mal sehen was sich machen lässt, wird ne Weile dauern.
09/13/2010 22:00 | Moep |#19
Von ner 2d engine like directx hab ich schoma irgendwo was gelesen, qber heut kein bock mehr danach zu suchen.

Btw. Klemmt dein thx button? So nen par usefull post zu deinem problem sind ja schon gekommen... ;)
09/13/2010 22:16 mipez#20
Quote:
Originally Posted by | Moep | View Post
Von ner 2d engine like directx hab ich schoma irgendwo was gelesen, qber heut kein bock mehr danach zu suchen.

Btw. Klemmt dein thx button? So nen par usefull post zu deinem problem sind ja schon gekommen... ;)
Muss sich erst noch zeigen wie nützlich ;D
Posts vergammeln ja nich xD

Ich kenn n paar, aber bei denen haberts auch wieder an der Geschwindigkeit...
09/14/2010 12:52 | Moep |#21
Quote:
Originally Posted by mipez View Post
Muss sich erst noch zeigen wie nützlich ;D
Posts vergammeln ja nich xD

Ich kenn n paar, aber bei denen haberts auch wieder an der Geschwindigkeit...
pfff, schau dir mal DEINE ersten Versuche an und guck was jetzt durch MEINE Arbeit daraus geworden ist, alleine hättest du das in Monaten nicht geschafft...
09/14/2010 16:03 mipez#22
Quote:
Originally Posted by | Moep | View Post
pfff, schau dir mal DEINE ersten Versuche an und guck was jetzt durch MEINE Arbeit daraus geworden ist, alleine hättest du das in Monaten nicht geschafft...
Das Einzige was du speziell dazu beigetragen hast, is die For...Next Schleife bei meinem 2. Script.

Bei deinem Desktop-Script bin ich noch am auseinander klamüsern, deswegen auch: "Muss sich erst noch zeigen wie nützlich"...

Wenn es dir soviel bedeutet, hau ich auf deinen Draw-Funktion-Post n Thanks drauf >_>
09/14/2010 17:00 .nAno#23
als kleiner Tipp:
Wenn du etwas wie das hier für größere Auflösungen planst bist du bei AutoIT + GUI falsch.
Selbst wenn du die Sache durch einen Algo beschleunigst wird der User sehen können, dass da etwas dargestellt wird. Probiere stattdessen mal AutoIT + GDI, was meiner Meinung nach die beste Grafikimplementierung für AutoIT ist, solange es ums Renderen geht.
Für etwas ganz gescheites solltest du dir aber mal C oder C++ und OpenGL (da anfängerfreundlicher als DirectX) reinziehen. Mit nem gescheiten Algo kannst du damit auf ziemlich gute Darstellungsgeschwindigkeiten kommen ;)
09/15/2010 21:09 mipez#24
Hm ich versuchs mal über Delphi...

Btw. Moep dein Script hat mir anderweitig geholfen ;D
09/15/2010 21:17 | Moep |#25
Auch gut. Sprich, was hast du daraus gezaubert?
09/16/2010 19:22 mipez#26
Quote:
Originally Posted by | Moep | View Post
Auch gut. Sprich, was hast du daraus gezaubert?
Noch garnichts, aber hat mich auf ne Idee für ein Paint.Net Plugin gebracht xD