- Offizieller Beitrag
Hallo
Ich schon wieder Ihr könnt euch bald auf eine komplett neue Ära der LCD Fernsteuerung für die G15 freuen. Diesmal greif ich nämlich direkt auf das SDK zu.
So, aber nun zu meinem Problem:
Wenn man ein Bitmap auf der LCD anzeigen will, reicht es nicht, einfach das HBITMAP zu übergeben, sondern man muss das Bitmap in ein byte Array packen.
Bisher mach ich das so:
Spoiler anzeigen
Global Const $LGLCD_STRUCT_Bitmap160x43x1 = DllStructCreate("dword Format;byte pixel["&$LGLCD_BMP_HEIGHT*$LGLCD_BMP_WIDTH&"]")
DllStructSetData($LGLCD_STRUCT_Bitmap160x43x1,1,$LGLCD_BMP_FORMAT_160x43x1)
$hDC_tmp = _WinAPI_GetDC(0)
$hDC = _WinAPI_CreateCompatibleDC($hDC_tmp)
_WinAPI_ReleaseDC(0, $hDC_tmp)
_WinAPI_SelectObject($hDC,$hBitmap)
For $y = 0 To 42
For $x = 0 To 159
$aCall = DLLCall("gdi32.dll","int","GetPixel","int",$hDC,"int",$x,"int",$y)
$z +=1
DllStructSetData($LGLCD_STRUCT_Bitmap160x43x1,2, $aCall[0]*255/0xffffff,$z)
Next
Next
_WinAPI_DeleteDC ($hDC)
Dies Funktioniert auch einwandfrei und auch relativ schnell.
Das Problem allerdings ist, dass diese Funktion ggf. 10 mal in der Sekunde oder sogar öfter aufgerufen wird.
Und das brauch "ordentlich" Prozessorleistung (bei meinem Quadcore ca 6%) was natürlich über einen langen Zeitraum zu viel ist.
Hat jemand eine Idee, wie man diesen Vorgang besser machen kann?
Vielen Dank schonmal
Mfg Spider