Moin auch,
Vorgeschichte: Windows lässt standardmässig nur 10000 GDI-Handles (pro Instanz?) zu. Wenn man zb eine Form erstellt und sich darauf ein Image-control packt und mit einem Image füllt, dann werden 4 GDI-Handles verbraucht. Also 1 Bild = 4 Handles. Wird jetzt eine Imagelist auf die Form gepackt, und man packt in diese 2501 Icons, dann wird die Anwendung theoretisch abschmieren. wenn du in einer Anwendung zwei Forms hast und von einer Form die zweite immer aufrufst, die auch viele Images hat, dann werden die Images darauf immer hinzuaddiert. d.h. hast du form1 und form2 und form2 hat 100 icons, kannst du theoretisch auf einmal form2 nur 25 mal offen haben.
So, ich habe ein Control, dass eine Imagelist enthält, die 120 Icons enthält. Dieses Control sitzt auf einem weiteren Control und kann darauf bis zu viermal instanziiert werden, also pro Hauptcontrol 480 Icons x 4 = 1920 GDI-Handles. D.h. ich öffne das Control nicht mal oft und schon schmiert mir die Anwendung weg.
Also ist die Imagelist schon mal keine Lösung für viele Images. Dann hab ich es halt mit der Resource-Datei in VB versucht. Problem, man kann nur Bitmaps - also bmps laden. Ich habe aber Icons und zwar deswegen, da die einen transparenten Hintergrund haben müssen. Wenn ich diese Icons unter Custom ablege, kann ich diese als Byte-Array zurückliefern. Hier mein Problem:
so, wenn ich diesen Code da ausführe, dann wird etwas in der PicureBox sichtbar, aber das sieht ganz komisch aus, man kann da gar nichts drauf erkennen.
hat jemand eine ahnung, was ich falsche mache?
Also, Byte-Array(Icon - *.ico) aus LoadResData zu PictureBox = wie?
Danke für die Hilfe. Gruß, NRF
Vorgeschichte: Windows lässt standardmässig nur 10000 GDI-Handles (pro Instanz?) zu. Wenn man zb eine Form erstellt und sich darauf ein Image-control packt und mit einem Image füllt, dann werden 4 GDI-Handles verbraucht. Also 1 Bild = 4 Handles. Wird jetzt eine Imagelist auf die Form gepackt, und man packt in diese 2501 Icons, dann wird die Anwendung theoretisch abschmieren. wenn du in einer Anwendung zwei Forms hast und von einer Form die zweite immer aufrufst, die auch viele Images hat, dann werden die Images darauf immer hinzuaddiert. d.h. hast du form1 und form2 und form2 hat 100 icons, kannst du theoretisch auf einmal form2 nur 25 mal offen haben.
So, ich habe ein Control, dass eine Imagelist enthält, die 120 Icons enthält. Dieses Control sitzt auf einem weiteren Control und kann darauf bis zu viermal instanziiert werden, also pro Hauptcontrol 480 Icons x 4 = 1920 GDI-Handles. D.h. ich öffne das Control nicht mal oft und schon schmiert mir die Anwendung weg.
Also ist die Imagelist schon mal keine Lösung für viele Images. Dann hab ich es halt mit der Resource-Datei in VB versucht. Problem, man kann nur Bitmaps - also bmps laden. Ich habe aber Icons und zwar deswegen, da die einen transparenten Hintergrund haben müssen. Wenn ich diese Icons unter Custom ablege, kann ich diese als Byte-Array zurückliefern. Hier mein Problem:
Code:
Private Declare Function SetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long 'damit kann ich aus bytearrays pitcures machen
Public sub loadblablub
dim bRet() as byte
bRet = LoadResData(...) 'hier kriege ich das array zurück - funktioniert
SetBitmapBits Picture1.Image, ubound(bRet), bRet(0) 'bytearray zu Image
Picture1.Refresh
end sub
so, wenn ich diesen Code da ausführe, dann wird etwas in der PicureBox sichtbar, aber das sieht ganz komisch aus, man kann da gar nichts drauf erkennen.
hat jemand eine ahnung, was ich falsche mache?
Also, Byte-Array(Icon - *.ico) aus LoadResData zu PictureBox = wie?
Danke für die Hilfe. Gruß, NRF