hab nochmal nen bissel rumgestöbert und nachgelsen und bin dann auf das hier gekommen
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| function GetBitmapMem(hBmp:hBitmap;var fSize:Cardinal):pointer; var Dib : TDIBSection; bfh : TBitmapFileHeader; begin FillChar(bfh,SizeOf(bfh),0); FillChar(dib,SizeOf(dib),0); GetObject(hBmp, sizeof(dib), @dib); dib.dsBmih.biSizeImage := dib.dsBm.bmWidth*dib.dsBm.bmHeight*(dib.dsBm.bmBitsPixel div 8); bfh.bfOffBits := sizeof(bfh) + sizeof(dib.dsBmih); bfh.bfType := $4D42; bfh.bfSize := bfh.bfOffBits + dib.dsBmih.biSizeImage; fSize := bfh.bfSize; GetMem(Result,fSize); Move(Result,bfh, sizeof(bfh)); Move(Pointer(Cardinal(Result) + sizeof(bfh))^,dib.dsBmih, sizeof(dib.dsBmih)); Move(Pointer(Cardinal(Result) + bfh.bfOffBits)^, dib.dsBm.bmBits, dib.dsBmih.biSizeImage); end; |
erzeugt ein Bitmapobject direkt im speicher
die andere funktion dürfte fehlerhaft ein da GlobalSize immer 0 zurückliefert
@BenBe : soweit ich weiß muss man nur $4d42 reinschrieben ( = 'BM' = 19778 )
Willst du Körper an Körper pressen? Atem spüren? Gerüche wahrnehmen? Verschiedene Stellungen probieren? Rein und raus? Von hinten nach vorne? Ja? Dann nimm den Bus!