一个类型转换的问题!高手进来接分!

Jindu 2003-11-28 03:05:42
一段 VC 的代码中定义了一个们图信息头,并从屏幕抓了一幅位图放入其中了
BITMAPINFOHEADER SourceInfo;
我想把 BCB 中 的 pBitmap(Graphics::TBitmap *pBitmap;)直接赋给SourceInfo ,在此请各位写段转换的代码!!
...全文
24 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jindu 2003-11-28
  • 打赏
  • 举报
回复
谢谢大家,结贴好了
yjy1001 2003-11-28
  • 打赏
  • 举报
回复
补充:以上说的 54byte 不是固定的, 一般的24byteBMP 头是 54个byte ,但如果是 16bit 或其他 灰度则不一定是
yjy1001 2003-11-28
  • 打赏
  • 举报
回复
刚上,才收到你的 短信,看了下。首先 声明—— 偶不怎么懂VC (菜)
但 如果是屏幕抓图 ,却是 很容易的

Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
TCanvas can = new TCanvas();
HDC hDC = GetDC(0);
TRcet rect=Rect(0,0,Screen->Width,Screen->Height);
can->Handle = hDC;
pBitmap->CopyRect(rect,can->Handle,rect);
//-----pBitmap 包存着 屏幕信息 , 你可以通过 控制 rect 来改变你想要的区域

//-----
delete pBitmap;
delete can;
ReleaseDC(0, hDC);

如果 你想得到的只是 bitmap的头,可以用流来装进去,自己读 前面 54个byte,BMP的文件格式 讲解 很多的,自己查查 这里不详细说了
踏岸寻柳 2003-11-28
  • 打赏
  • 举报
回复
你能够保证位图B和位图A的基本属性(宽、高、位深度等)都一样吗?
如果一样,找到A的头信息结束的地方(也就是实际存储图像数据的开始位置),从B中读数据直接写到A中,将A里本来的数据覆盖就行了;如果不一样,就要连头信息也自己写了。
踏岸寻柳 2003-11-28
  • 打赏
  • 举报
回复
我觉得表述还不是很清晰:
位图头信息 + 位图A,想把位图B赋值给头信息? 还是把B替换A?
Jindu 2003-11-28
  • 打赏
  • 举报
回复
自己顶
jiangchun_xn 2003-11-28
  • 打赏
  • 举报
回复
通过pBitmap->Handle来调用API实现读取信息头,你熟悉api,肯定知道怎么做了。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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