为何GetDIBits函数返回的buffer不对?????

zoao 2003-08-26 07:06:49
使用WebBrower浏览ASP,抓取WebBrower内指定大小的内容,设WebBrower.Visible:=False,应该如何做?
以下代码抓出的BMP不对.
GetMem(bytesBuffer,BitSize);
fillChar(BytesBuffer^,BitSize,0);
hDC1:=GetDC(0);
MemBitmap:=CreateCompatibleBitmap(hDC1,iWidth,iHeight);
ShowBitMap:=CreateCompatibleBitmap(hDC1,iWidth,iHeight);
ReleaseDC(0, hDC1);
MemDC:=CreateCompatibleDC(0);
SelectObject(MemDC,MemBitMap);
hDC2:=CreateCompatibleDC(0);
SelectObject(hDC2,ShowBitMap);
SendMessage(wbBrow.Handle,WM_PRINT,MemDC,PRF_OWNED);
SetStretchBltMode(hDC2,STRETCH_HALFTONE);
StretchBlt(hDC2,0,0,iWidth*2,iHeight*2,MemDC,0,0,Width,Height,SrcCopy);
DeleteDC(MemDC);
DeleteObject(MemBitmap);

with SrcbmHeader do begin
biSize:=SizeOf(TBitmapInfoHeader);
biWidth:=iWidth;
biHeight:=iHeight;
biPlanes:=1;
biBitCount:=24;
biCompression:=BI_RGB;
end;

bi.bmiHeader:=SrcbmHeader;
if GetDIBits(hDC2,ShowBitMap,0,iHeight,BytesBuffer,bi,DIB_RGB_COLORS)=0 then
begin
showmessage('错误抓图'+inttostr(GetLastError));
end
else
begin
DeleteDC(hDC2);
DeleteObject(ShowBitMap);
MemFile:=TMemoryStream.Create;
MemFile.Write(BytesBuffer^,BitSize);
MemFile.SaveToFile('D:\a.bmp');
MemFile.Free;
end;
...全文
100 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
eliphe 2003-08-27
  • 打赏
  • 举报
回复
查一下GetDIBits的api手册吧.
zoao 2003-08-27
  • 打赏
  • 举报
回复
查过呀。

GetDIBits返回的值是大于0的呀。可是bytesbuffer里的内容是不对。要不怎么存出来的bmp打不开呢?

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧