急!急!急!!!TImage显示图片上插入图片 ( 积分: 50 )

  • 主题发起人 主题发起人 bbtwo33
  • 开始时间 开始时间
B

bbtwo33

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在用TImage控件显示背景图片,现在要求在背景图片上插入一个新图片 最好还能背景图和插入的图保存为一个图片文件!请问有甚么方法吗?
分不够可以再加 谢谢了!
 
procedure TForm1.BitBtn1Click(Sender: TObject);
var
bmp: TBitmap;
begin
bmp := TBitmap.Create;
bmp.LoadFromFile('e:/Delphi.bmp');
Image1.Canvas.Draw(0, 0, bmp);
Image1.Picture.SaveToFile('e:/new.bmp');
bmp.Free;
end;
 
hwljerry 这个代码有点问题 我先在TImage上load了一个图片然后照你的代码写报
Can only modify an image if it contains a bitmap

我怀疑试方法用的不对 因为试要在图片上查图片所以我这么写的
var bmp: TBitmap;
begin
bmp := TBitmap.Create;
bmp.LoadFromFile('E:/以往工程/工程/战例查询/参考战例图标/增加节点.bmp');
self.img_logo.Picture.Bitmap.Canvas.Draw(0, 0, bmp);
img_logo.Picture.Bitmap.SaveToFile('e:/new.bmp');
bmp.Free;

end;
结果是 一点这个按钮 图片就没了 整个TImage变成白色 也没有保存图片文件 保存的文件是0字节
 
你导入的图片不是真的BMP图片。。你先用画图软件把图片转一下看看。。。
 
换了图还是不成啊! hwljerry 或者你加我 做个能运行的小例子发给我 我的qq34483703

真的很急啊!谢谢谢谢!
 
hwljerry, 发我邮箱吧bbtwo33@126.com 公司封qq了 不好意思 麻烦你了
 
我都可以啊。。。
你确定你Image背景图是BMP格式吗。。。我把背景换成JPG也有那样的提示。。

我不能上QQ啊。没办法咯。
 
procedure TForm1.Button1Click(Sender: TObject);
var
bmp: TBitmap;
begin
bmp := TBitmap.Create;
bmp.LoadFromFile('D:/背景.bmp');
Image1.Picture.Bitmap:= bmp;
bmp.LoadFromFile('D:/插入图.bmp');
Image1.Canvas.Draw(0, 0, bmp);
Image1.Picture.SaveToFile('D:/合成图.bmp');
bmp.Free;
end;
 
hwljerry 麻烦 打个包发我邮箱吧 bbtwo33@126.com 把图片一起发过来 谢谢了
 
背景图要在程序中动态加载,不要事先在设计期间加载。
这个方法还能适应JPG,GIF格式的,只不过还要加入几行代码判断一下!
 
to:bbtwo33;我发了。不过忘记写保存的代码了,你自己加一下。
to:YANGWEI0308;动态和静态的效果是一个样的啊。没什么区别啊。
 
YANGWEI0308 如何 支持 GIF 和 jpg 背景图只能是 bmp吧
 
在我试验的时候发现如果设计时把背景加入的话,插入新图片就会报错Can only modify an image if it contains a bitmap
 
YANGWEI0308 是啊 我也遇到这样的问题 那动态加入的话 能使用jpg和gif格式吗? 我再加分 希望能给出代码
 
先回家了 两位能加我qq吗 晚上聊 谢谢!
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,jpeg, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
BKImg: TImage;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure DrawMap(Backgroud,InsertMap: String);
end;

var
Form1: TForm1;

implementation

{$R *.DFM}
procedure TForm1.DrawMap(Backgroud,InsertMap: String);
var JPEG: TJPEGImage;
bmp: TBitmap;
begin
bmp := TBitmap.Create;
if Uppercase(ExtractFileExt(Backgroud)) = '.JPG' then begin
JPEG:= TJPEGImage.Create;
JPEG.LoadFromFile(Backgroud);
bmp.Assign(JPEG);
JPEG.Free;
end else if Uppercase(ExtractFileExt(Backgroud)) = '.BMP' then begin
bmp.LoadFromFile(Backgroud);
end;
BKImg.Picture.Bitmap:= bmp;

if Uppercase(ExtractFileExt(InsertMap)) = '.JPG' then begin
JPEG:= TJPEGImage.Create;
JPEG.LoadFromFile(InsertMap);
bmp.Assign(JPEG);
JPEG.Free;
end else if Uppercase(ExtractFileExt(InsertMap)) = '.BMP' then begin
bmp.LoadFromFile(InsertMap);
end;

BKImg.Canvas.Draw(0, 0, bmp);
BKImg.Picture.SaveToFile('D:/合成图.bmp');
bmp.Free;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
DrawMap('d:/2005917105527.jpg','d:/肖像6.bmp');
end;

end.


给你做一个JPG图像和BMP图像合成的例子吧,别的更复杂的功能还请自己研究。
 
顶一下,这些资料以后或许用得上,收起来先
 
先导入的背景图可以是jpg格式的吗?
 
分不够的话 我可以在开新帖放分
 

Similar threads

D
回复
0
查看
744
DelphiTeacher的专栏
D
D
回复
0
查看
718
DelphiTeacher的专栏
D
后退
顶部