.....
Canvas.textout(random(width),random(height),'OK');
....
可以执行!
但下面的为什么不行!
....
var
Canvas1:TCanvas;
begin
Canvas.Create;
Canvas.Canvas.textout(random(width),random(height),'OK');
Canvas.free;
....

解决方案 »

  1.   

    TCanvas是抽象类,不能创建实例,你可以建一个Bitmap,
    然后就可以画了。
    Bitmap.create
    Bitmap.Canvas.Canvas.textout(random(width),random(height),'OK');
    Bitmap.free;
      

  2.   

    错了,是
    Bitmap.create
    Bitmap.Canvas.textout(random(width),random(height),'OK');
    Bitmap.free;
      

  3.   

    先谢谢你了.
    请问这句中的Canvas.textout(random(width),random(height),'OK');的CANVAS指的是什么?
      

  4.   

    Canvas是一个画布类,你可以用里面的方法来画图,而这个画布一般不能单独创建,一般存在其他组件中,如Form,Image,Painbox,等等。
      

  5.   

    那这个CANVAS应该是FORM的属性,可以等效于下面语句,对否!
    Form1.Canvas.textout(random(width),random(height),'OK')
      

  6.   

    是的,等效!TCanvas必须与一定的设备环境相联系才可以使用,到并不是说TCanvas是抽象类,不能创建实例,事实上,你创建TCanvas实例并不错报错。只是它没有分配到一定的设备环境上,无法操作而已。
      

  7.   

    设备环境?
    是指诸如FORM,BUTTON等控件吗?
      

  8.   

    你可以先就这样理解一般可以使用GetDC获得设备环境,只要有窗口句柄的,系统中的任何窗口你都可以通过GetDC获得设备环境后进行绘制操作(即使这个窗口不是你的程序中的)
      

  9.   

    zwjchina(蒲石),你能有空帮我看看这个问题吗?
    http://community.csdn.net/Expert/topic/3131/3131555.xml?temp=.736294