是否能不用控件直接调用TImage的方法canvas呢?(50分)

  • 主题发起人 主题发起人 大福星
  • 开始时间 开始时间

大福星

Unregistered / Unconfirmed
GUEST, unregistred user!
能不能不用delphi的控件,而直接调用该控件的对象呢?(表达不好,举个例子)
例如我想调用TImage对象:(在不用控件的情况下)
var
Image1:TImage;
begin
image1:=Timage.create(self);
with Image1 do begin
Canvas.Brush.Color := clRed;
Canvas.Brush.Style := bsDiagCross;
Canvas.Ellipse(0, 0, Image1.Width, Image1.Height);
end;
end;
怎么不行呢?谁能教我一下,谢谢了!小弟积分快用完了,怎么办?
 
var
Image1:TImage;
begin
image1:=Timage.create(self);
image1.Parent:=Form1; [red]//注意这句[/red]
with Image1 do begin
Canvas.Brush.Color := clRed;
Canvas.Brush.Style := bsDiagCross;
Canvas.Ellipse(0, 0, Image1.Width, Image1.Height);
end;
end;
 
提示有什么错误?
 
我用wjiachun上述的方法,图像显示的不是十分的完整。一定要定义image1的长度和宽度
才可以实现吗?
 
对不起,把Image。AutoSize设置为True.最好把Center也设为True[:)]
 
那用这种方法和用控件有什么区别吗?
 
这种方法节省资源啊!
最后你可以释放掉。
 
如果你只是想画图的话,你不需要使用TImage。
你可以使用 TCanvas 类,你的代码可以改为以下:
var
Image1:TCanvas; [red]//注意这里[/red]
begin
image1:=TCanvas.create();
with Image1 do begin
handle:=getdc(form1.handle); [red]//注意这里[/red]
Brush.Color := clRed;
Brush.Style := bsDiagCross;
Ellipse(0, 0, 100,100);
end;
image1.Free;
end;
 
沧海:
象这种作图法和直接在form上作图又有什么区别呢?
(例如:我们可以直接在from上用canvas来画图)
 
呵呵,如果使用我上面的代码,那么和在一个FORM上直接画图是没有什么区别的。
重要的是TCanvas 可以通过 Handle 来指明你想在哪个控件上画图!

也许我的理解还有限,希望能有一些高手参加这个讨论,我也想了解多一些!
 
直接用TBitmap不就可以了吗?干吗非得用TImage???
 
用TBitmap和用Timage有什么主要的区别吗?
 
多人接受答案了。
 
后退
顶部