又来送分了.嘿嘿. ( 积分: 100 )

  • 主题发起人 主题发起人 jingtao
  • 开始时间 开始时间
J

jingtao

Unregistered / Unconfirmed
GUEST, unregistred user!
有两组BMP的裸数据A和B,其中A的大小为1024X768,B的大小为30X20,现在先把A显示在Image1控件上,其中Image1.Stretch:=TRUE;现在需要把B覆盖到Image1的(30,60)坐标处.使两图变成一幅.请给出高效算法.
 
有两组BMP的裸数据A和B,其中A的大小为1024X768,B的大小为30X20,现在先把A显示在Image1控件上,其中Image1.Stretch:=TRUE;现在需要把B覆盖到Image1的(30,60)坐标处.使两图变成一幅.请给出高效算法.
 
直接调用的bitmap的Canvas.Draw方法不用行了嘛
 
如果我使用Draw把BMP画出来,那么当窗口被遮掩时,图像会覆盖.具体情况请看http://www.138soft.com/delphimirro.exe.被覆盖后请刷新一次屏幕.速度大概每秒钟应该有15幅,不消耗CPU.
如果我把前一副图片先保存在内存,后来的贴上去再整个SHOW,那么CPU立刻高起来,有时侯甚至98%.
 
怎么你的程序运行提示是安装驱动什么的?不会是病毒吧?
 
直接DRAW在CANVAS上不行的,试试这样:

var
bmp: TBitmap;
begin
bmp := TBitmap.Create;
try
bmp.PixelFormat := pf24bit;
bmp.Width := Image1.Width;
bmp.Height := Image1.Height;
bmp.Canvas.StretchDraw(Rect(0, 0, bmp.Width - 1, bmp.Height - 1), bmpA);
bmp.Canvas.Draw(30, 60, bmpB);
Image1.Picture.Assign(bmp);
finally
bmp.Free;
end;
end;
 
呵呵,关注~~~~~~~~~
 
抓显存肯定需要安装驱动的啊.
如果我把前一副图片先保存在内存,后来的贴上去再整个SHOW,那么CPU立刻高起来,有时侯甚至98%. =====这个就是你贴的方法啊
 
懒得弄了.下载吧:
http://www.138soft.com/html/ssc/1/2/17.htm
 
多人接受答案了。
 
后退
顶部