如何拼接超大图?

awaker 2002-08-23 03:57:41
我想用20*20个800*600的图片拼成一个大图?
请详细说明,最好附源码.
...全文
59 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
awaker 2002-08-23
  • 打赏
  • 举报
回复
kingcaiyao(AKing):
你把Form换成Image试试看,我试过10000*10000是失败的.
不知可有其它方法?
Awaker00 2002-08-23
  • 打赏
  • 举报
回复
关注
我不懂电脑 2002-08-23
  • 打赏
  • 举报
回复
用多个Image拼接
kingcaiyao 2002-08-23
  • 打赏
  • 举报
回复
用BitBlt吧:
跟你写一个简单的代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
BITMAP BStruct;
HDC DC,MemDC;
HBITMAP Bitmap,OldBitmap;
Bitmap=::LoadBitmap(HInstance,"ABIAN");
::GetObject(Bitmap,sizeof(BITMAP),&BStruct);
DC=::GetDC(Form1->Handle);
MemDC=::CreateCompatibleDC(DC);
OldBitmap=::SelectObject(MemDC,Bitmap);
while(!MyQuery->Eof)
{

if(i>=50)
{

i=0;
j++;
}
::BitBlt(DC,i*8,450+j*8,8,8,MemDC,MyQuery->FieldByName("X")->AsInteger+100,MyQuery->FieldByName("Y")->AsInteger+100,SRCCOPY);
MyQuery->Next();
i++;
}
::SelectObject(MemDC,OldBitmap);
::DeleteObject(MemDC);
}
//
awaker 2002-08-23
  • 打赏
  • 举报
回复
我现在用的是Image->Canvas->CopyRect()方法将图片一个一个拷进一个大图片框中,但发现有限制,Canvas最大只能到7000多,再大就提示内存不足,请问谁有其它方法实现?
gfh21cn 2002-08-23
  • 打赏
  • 举报
回复
可以呀
你用ScrollBox来做容器

把Image->Parent=ScrollBox
再设置image的Left,Top
hzhxxx 2002-08-23
  • 打赏
  • 举报
回复
关注,大图象问题!

13,873

社区成员

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

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