主题:请问如何向一个Image控件中添加一个位图
youfeng555
[专家分:0] 发布于 2006-05-13 00:35:00
如题,谢谢大家指教!
回复列表 (共10个回复)
沙发
rudolf [专家分:440] 发布于 2006-05-13 11:22:00
LoadImage 载入一个位图、图标或指针
板凳
youfeng555 [专家分:0] 发布于 2006-05-13 13:01:00
再次请问LoadImage函数是那个类的函数,实际操作应该如何,请给出源代码。
(例如要为Image控件Image1导入一个位于D:\a.bmp的位图)
谢谢!
3 楼
rudolf [专家分:440] 发布于 2006-05-13 15:02:00
Graphics::TBitmap *newbmp = new Graphics::TBitmap();
newbmp->LoadFromFile("D:\a.bmp"); //读取bmp文件
Image->Picture->Graphic = newbmp;
4 楼
youfeng555 [专家分:0] 发布于 2006-05-14 23:18:00
再次请问:
我按rudolf的做法:
加入一个Image控件(名称为Image1),然后在Form1的构造函数中写入:
Graphics::TBitmap *newbmp = new Graphics::TBitmap();
newbmp->LoadFromFile("D:\\a.bmp");
Image1->Picture->Graphic = newbmp;
但是编译时却出现以下的错误:
Project Project1.exe raised exception class ElnvalidGraphic with message 'Bitmap image is valid'', Process stopped. Use step or Run to continue.
请问这是为什么?
5 楼
rudolf [专家分:440] 发布于 2006-05-15 08:22:00
自己多试试吧
不要那么懒
6 楼
youfeng555 [专家分:0] 发布于 2006-05-15 13:24:00
非常感谢rudolf的意见~我会继续试试看
7 楼
christ115 [专家分:1580] 发布于 2006-05-16 13:07:00
Image1->Picture->LoadFromFile("D:\\a.bmp");
8 楼
christ115 [专家分:1580] 发布于 2006-05-16 13:20:00
[quote]Graphics::TBitmap *newbmp = new Graphics::TBitmap();
newbmp->LoadFromFile("D:\a.bmp"); //读取bmp文件
Image->Picture->Graphic = newbmp;[/quote]
用此方法也可行,不过要记得:
delete newbmp;
Image->Picture->Graphic = newbmp这句不是简单的指针赋值,是一个复制的过程(深拷贝)
以下是SetGraphic的代码,供参考:
procedure TPicture.SetGraphic(Value: TGraphic);
var
NewGraphic: TGraphic;
begin
NewGraphic := nil;
if Value <> nil then
begin
NewGraphic := TGraphicClass(Value.ClassType).Create;
NewGraphic.Assign(Value);
NewGraphic.OnChange := Changed;
NewGraphic.OnProgress := Progress;
end;
try
FGraphic.Free;
FGraphic := NewGraphic;
Changed(Self);
except
NewGraphic.Free;
raise;
end;
end;
9 楼
rudolf [专家分:440] 发布于 2006-05-16 16:24:00
Bitmap = new Graphics::TBitmap();
图片对象在使用完位图后将其自动释放,所以可不必自行释放位图对象。
我在书上看到有这么个说法,不知是否有问题。
10 楼
雪天飞剑 [专家分:0] 发布于 2006-05-20 10:49:00
如果在BCB里做,只要在Image属性Picture中加入就可以了!
我来回复