如何将TPanel中内容保存到bmp文件中?

chfan001 2003-11-18 10:07:24
用了几种方法,都只能保存空白的TPanel,怎样将TPanel中的内容全部保存?
...全文
76 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjy1001 2003-11-19
  • 打赏
  • 举报
回复
你只的是 panel上的 图
还是 panel上 caption。

TCanvas *canvas;
canvas->Handle=GetDC(Panel1->Handle);
canvas->SaveToFile("C:\\1,bmp");

不知道 能不能满足你的要求

实在不行 将整个屏幕 拷贝下来 …… 笨方法
chfan001 2003-11-19
  • 打赏
  • 举报
回复
我试了用TForm::GetFormImage可以做到,只是效果不好,
会出现黑斑,有的地方还有缺失,各位有更好的方法尽管
说出来啊!
chfan001 2003-11-19
  • 打赏
  • 举报
回复
即使把其中的每个组件转化为string,也不知道每个组件的位置信息啊,
怎么把这些内容原样copy到位图的Canvas上啊?
chfan001 2003-11-19
  • 打赏
  • 举报
回复
分不够可以再给啊,就怕给出来问题还是解决不了,
说得不清不白的有什么用啊。你写的作用好像就是
做个文本向流文件的转换啊,搞不懂Write("\3",1),
Write("\4",1)有什么作用。
Friecin 2003-11-19
  • 打赏
  • 举报
回复
TCanvas *canvas;
canvas->Handle=GetDC(Panel->Handle);
canvas->SaveToFile("C:\\my,panelbmp");
yesry 2003-11-19
  • 打赏
  • 举报
回复
pss=new TStringStream(s);//这一句不能说明问题吗?
我原来的太复杂了,全部贴过来怕侵犯了公司产权。你的分这么少,我都懒得改。
chfan001 2003-11-19
  • 打赏
  • 举报
回复
楼上的能不能解释一下,pms是什么变量,怎样把Panel中所有组件读出来,
又怎样写入位图文件啊?
yesry 2003-11-19
  • 打赏
  • 举报
回复
保存时用WriteComponent()

for(i=0;i<ComponentCount;i++)
{
com=Components[i];
if(com->Name!="")
{
mem->Clear();
mem->WriteComponent(com);
mem->Position=0;
class_name=com->ClassName();
string_stream->Write(class_name.c_str(),class_name.Length());
string_stream->Write("\3",1);
ObjectBinaryToText(mem,string_stream);
string_stream->Write("\4",1);
}
}


装入是用ReadComponent()
pss=new TStringStream(s);
pms->Clear();
ObjectTextToBinary(pss, pms);
pms->Position=0;
pms->ReadComponent(CurrentComponent);
delete pss;
chfan001 2003-11-19
  • 打赏
  • 举报
回复
我要将Panel中的label等内容保存到bmp文件,通过句柄的方法我已经试过了,
但取到的是空白,拷屏肯定不行的,而且panel所在的页面(使用NoteBook)
也不一定在当前屏幕显示。

13,825

社区成员

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

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