菜鸟急问高手,在线等,立即给分

zsuswy 2005-04-21 10:33:20
我用Timage 控件,想一次拷贝一块图片区域到Timage上,要拷贝很多小块的图片到Timage上,开始时Timage上是没有图片的,拷贝时我用的函数是Form1.Image1.Canvas.CopyRect(........);

因为要拷贝图象到Timage上,所以我在代码中动态改变它的width和height 。但是每次复制一块图片上去后,都显示不出来啊,用repaint和refresh都不行啊。因为我是吧Timage放在scrollbox里面所以当CopyRect几次后,由于scrollbox的滚动条显示出来,这说明Timage的大小是在变化啊,但是图象为什么显示不出来呢??

搞了两天了,就是不行,我都快晕死了,请教高手!!!谢谢!!裸体跪谢!!!!
...全文
86 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zsuswy 2005-04-21
  • 打赏
  • 举报
回复
好,按高手的指点去试一下,我先去吃个饭,回来在试。
先谢谢大家
ly_liuyang 2005-04-21
  • 打赏
  • 举报
回复
不要用TImage
用TbitMap,处理完才使用TImage显示,这样该没问题吧?试一试看看

http://lysoft.7u7.net
zsuswy 2005-04-21
  • 打赏
  • 举报
回复
如果需要,我可以把整个代码贴出来,
我第一次用delphi 写程序,谢谢。我本来是用VC#的。
zsuswy 2005-04-21
  • 打赏
  • 举报
回复
这就是那个考贝图象的代码
变量说明:image1是目标控件,image2是源控件,MyRect1是image2上的一个区域,我就是要把image2上的MyRect1区域考贝到image1上,因为要考很多个区域,考贝到image1上是并列放在一起的。

procedure TForm1.Image1EndDrag(Sender, Target: TObject; X, Y: Integer);//拖动结束
begin
if(CanDrop) then
begin
if(Form1.Image1.Height<(MyRect1.Bottom-MyRect1.Top))
then Form1.Image1.Height:=MyRect1.Bottom-MyRect1.Top;
//改变高度,让image1的高度能让所有的小区域全部显示
Form1.Image1.Width:=Form1.Image3.Width+MyRect1.Right-MyRect1.Left;
//加宽,以足够容纳新拷贝来的区域
Form1.Image1.Canvas.CopyRect(Rect(Form1.Image1.Width-(MyRect1.Right-MyRect1.Left),0,Form1.Image1.Width,Form1.Image1.Height),Form1.Image2.Canvas,MyRect1);
end;
CanDrop:=false;
end;
Corn1 2005-04-21
  • 打赏
  • 举报
回复
用BitBlt试试?
luckygame 2005-04-21
  • 打赏
  • 举报
回复
把代码粘出来。
zsuswy 2005-04-21
  • 打赏
  • 举报
回复
我再把问题说得明白一点,就是在一个image上抓出一小块一下块的图,放到另外一个image上,不是要叠加,是并列放开。问题是每次用Image.Canvas.CopyRect之后,目标image上都没有显示,不知道为什么。
望大虾指点!或者提供一个什么解决方案。

1,185

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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