我的意思是 typedef struct tagBITMAP { // bm LONG bmType; LONG bmWidth; LONG bmHeight; LONG bmWidthBytes; WORD bmPlanes; WORD bmBitsPixel; LPVOID bmBits; } BITMAP; 怎么从Tbitmap中获得以上数据的地址后直接访问bmbits等值
自己实现?我刚看了一个TBitmap的源码procedure TBitmap.WriteStream(Stream: TStream; WriteSize: Boolean); const PalSize: array [Boolean] of Byte = (sizeof(TRGBQuad), sizeof(TRGBTriple)); var Size, ColorCount: DWORD; HeaderSize: DWORD; BMF: TBitmapFileHeader; Save: THandle; BC: TBitmapCoreHeader; Colors: array [Byte] of TRGBQuad; begin if FImage.FSaveStream <> nil then begin Size := FImage.FSaveStream.Size; if WriteSize then Stream.WriteBuffer(Size, sizeof(Size));// 数据占内存大小 Stream.Write(FImage.FSaveStream.Memory^, Size);//数据 Exit; end; .......... ........... end;你把它修改一下,返回你要的 LPVOID bmBits 不就行了?
typedef struct tagBITMAP { // bm
LONG bmType;
LONG bmWidth;
LONG bmHeight;
LONG bmWidthBytes;
WORD bmPlanes;
WORD bmBitsPixel;
LPVOID bmBits;
} BITMAP;
怎么从Tbitmap中获得以上数据的地址后直接访问bmbits等值
const
PalSize: array [Boolean] of Byte = (sizeof(TRGBQuad), sizeof(TRGBTriple));
var
Size, ColorCount: DWORD;
HeaderSize: DWORD;
BMF: TBitmapFileHeader;
Save: THandle;
BC: TBitmapCoreHeader;
Colors: array [Byte] of TRGBQuad;
begin
if FImage.FSaveStream <> nil then
begin
Size := FImage.FSaveStream.Size;
if WriteSize then
Stream.WriteBuffer(Size, sizeof(Size));// 数据占内存大小
Stream.Write(FImage.FSaveStream.Memory^, Size);//数据
Exit;
end;
..........
........... end;你把它修改一下,返回你要的 LPVOID bmBits 不就行了?
http://www.csdn.net/dev/Format/graphics/Bmp.html