ich wollte eine farbpallette darstellen allerdings braucht gdi+ und quickdraw zu lange um ca 65000 pixel darzustellen. was mache ich falsch?. gibt es eine bessere möglichkeit?.
zeit bei mir für eine darstellung einer farbpalette
GDI+ : 6169ms
QuickDraw : 2284ms
GDI+
#include <SliderConstants.au3>
#include <GDIP.au3>
$gui = GUICreate("example", 296, 256)
[/autoit] [autoit][/autoit] [autoit]$slider = GUICtrlCreateSlider(261, 5, 30, 251, BitOR($TBS_VERT, $TBS_TOP, $TBS_LEFT, $TBS_BOTH, $TBS_NOTICKS, $TBS_ENABLESELRANGE))
GUICtrlSetLimit(-1, 255, 0)
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$graphics = _GDIPlus_GraphicsCreateFromHWND($gui)
$bitmap = _GDIPlus_BitmapCreateFromGraphics(256, 256, $graphics)
$buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
$brush = _GDIPlus_BrushCreateSolid()
GUISetState()
[/autoit] [autoit][/autoit] [autoit]While GUIGetMsg() <> -3
[/autoit] [autoit][/autoit] [autoit]$a = GUICtrlRead($slider)
[/autoit] [autoit][/autoit] [autoit]For $b = 0 To 255
For $c = 0 To 255
$color = String(Hex($a, 2) & Hex($b, 2) & Hex($c, 2))
_GDIPlus_BrushSetFillColor($brush, "0xFF" & $color)
_GDIPlus_GraphicsFillRect($buffer, $b, $c, 1, 1, $brush)
Next
Next
_GDIPlus_GraphicsDrawImage($graphics, $bitmap, 0, 0)
[/autoit] [autoit][/autoit] [autoit]WEnd
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_Shutdown()
[/autoit]QuickDraw
#include <QuickDraw.au3>
[/autoit] [autoit][/autoit] [autoit]_QuickDraw_Enable("example", 256, 256, 0, 0, False)
[/autoit] [autoit][/autoit] [autoit]$a = 0
[/autoit] [autoit][/autoit] [autoit]HotKeySet("{RIGHT}", "Slider1")
HotKeySet("{LEFT}", "Slider0")
While _QuickDraw_Running() And GUIGetMsg() <> -16
[/autoit] [autoit][/autoit] [autoit]_QuickDraw_ClearBuffer(0xFF000000)
[/autoit] [autoit][/autoit] [autoit]For $b = 0 To 255
For $c = 0 To 255
$color = String(Hex($a, 2) & Hex($b, 2) & Hex($c, 2))
_QuickDraw_Point($b, $c, "0xFF" & $color)
Next
Next
_QuickDraw_SwapBuffers()
[/autoit] [autoit][/autoit] [autoit]WEnd
[/autoit] [autoit][/autoit] [autoit]_QuickDraw_Disable()
Exit
Func Slider0()
If $a <> 0 Then $a -= 1
EndFunc ;==>Slider0
Func Slider1()
If $a <> 256 Then $a += 1
EndFunc ;==>Slider1