回 帖 发 新 帖 刷新版面

主题:请问如何向一个Image控件中添加一个位图

如题,谢谢大家指教!

回复列表 (共10个回复)

沙发

LoadImage 载入一个位图、图标或指针

板凳

再次请问LoadImage函数是那个类的函数,实际操作应该如何,请给出源代码。
(例如要为Image控件Image1导入一个位于D:\a.bmp的位图)

谢谢!

3 楼

Graphics::TBitmap *newbmp = new Graphics::TBitmap(); 
  newbmp->LoadFromFile("D:\a.bmp"); //读取bmp文件
   
   Image->Picture->Graphic = newbmp;

4 楼

再次请问:
我按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 楼

自己多试试吧

不要那么懒

6 楼

非常感谢rudolf的意见~我会继续试试看

7 楼

Image1->Picture->LoadFromFile("D:\\a.bmp");

8 楼

[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 楼

Bitmap = new Graphics::TBitmap();

图片对象在使用完位图后将其自动释放,所以可不必自行释放位图对象。

我在书上看到有这么个说法,不知是否有问题。

10 楼

如果在BCB里做,只要在Image属性Picture中加入就可以了!

我来回复

您尚未登录,请登录后再回复。点此登录或注册