主题:请问如何向一个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中加入就可以了!
							 
									
			
我来回复