我的这段程序报错:
procedure TForm1.Button1Click(Sender: TObject);
var
  Canvas: TCanvas;
begin
  x,y,i,j: Integer;
  x:=20;
  Canvas:=TCanvas.Create;  for i:=1 to 50 do  Canvas.Pixels[x+i,5]:=clRed;//  Canvas.Free;
end;
错误信息是:
canvas does not allow drawing!
为什么?

解决方案 »

  1.   

    var
      x,i: Integer;
    begin
      x:=20;
      for i:=1 to 50 do
      self.Canvas.Pixels[x+i,5]:=clRed;//
    end;
      

  2.   

    未指定Canvas.Handle,即HDC~~~加上一句类似
    Canvas.Handle:=GetDC(Form1.Handle);
    的代码,即可执行建议看看TCanvas是如何具体封装的~~~
      

  3.   

    你需要给canvas的大小,或者需要初始化
      

  4.   

    Canvas没有指定图形的输出设备。系统都不知道你要往什么上面画。
      

  5.   

    你需要给canvas的大小,或者需要初始化
      

  6.   

    楼上的,何必用GetDC呢,直接
    Canvas.Handle :=Form1.Canvas.Handle;就可以了啊!
      

  7.   

    既然要用兵Canvas.Handle := Form1.Canvas.Handle;
    那为什么不直接用Form1.Canvas???如果Delphi的TForm对象无Canvas成员呢?
    这是通过窗体句柄到HDC的一般转化过程~~~
      

  8.   

    事实上看看相关VCL就明白了,最终还是要通过GetDC去实现的~~~
      

  9.   

    你还没有对Canvas进行初始化,没哟选定他的绘图区域
    MyRgn := CreateRectRgn(100,100,200,200);
    SelectClipRgn(Canvas.Handle,MyRgn);
    Canvas.Pixels[x+i,5]:=clRed;
    SelectClipRgn(Canvas.Handle,nil);
    DeleteObject(MyRgn)或者你直接用api函数SetPixel
    ----
    我不是来相亲的
      

  10.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      C: TCanvas;
    begin
      x,y,i,j: Integer;
      x:=20;
      C:=TCanvas.Create;  for i:=1 to 50 do  C.Pixels[x+i,5]:=clRed;//  C.Free;
    end;
    这就不会报错
      

  11.   

    楼主,我是重庆的,有兴趣可以谈谈~~~~~~~
    TO  liuziran(倒立旋风转的青蛙) :
    你挺了解重庆人的,哈~~~~~~~~~
      

  12.   


    Canvas没有指定图形的输出设备。系统都不知道你要往什么上面画.
    上面说这个的是对的,不过38个大老爷们,你嫁谁啊?
      

  13.   

    to  fengyvn(fengyvn) :恩,重庆人比较火爆!喝烈酒,吃辣椒,十分生猛
      

  14.   

    回复人: sunwewillsharedoit(国) ( ) 信誉:100  2003-06-08 12:04:00  得分:0 
     
    我不是重庆的!
    但我要为重庆人说句话!
    你这个锤子,你怎么知道重庆人是同性恋,你才是呢!
    ----------------------------------------------------------------- 
    何必呢!!!!!!!!!!!!!!!!!!!!!
      

  15.   

    下次我也要用这个标题...杭州的美女相亲/..
    不对
    杭州的帅哥相亲..可惜csdn里面mm太少.....
      

  16.   

    to : liuziran(倒立旋风转的青蛙)
    说得好,敬王子一杯~~~~~~~~~
      

  17.   

    呵呵,canvas只是一个相当于环境信息的东西,如果要绘图一定要和某一个能够进行绘图的设备相关联也就是把handl 关联到某一个HDC上,这个设备可以是screen也可以是printer.
      

  18.   

    别的我不懂,即使错了,也应这末写。
    var
      Canvas: TCanvas;
      x,y,i,j: Integer;begin  
      x:=20;
      Canvas:=TCanvas.Create;  for i:=1 to 50 do  Canvas.Pixels[x+i,5]:=clRed;//  Canvas.Free;
    end;你要干吗?
      

  19.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      Canvas: TCanvas;
    begin
      x,y,i,j: Integer;//变量定义位置出错
      x:=20;
      Canvas:=TCanvas.Create;//这里  for i:=1 to 50 do  Canvas.Pixels[x+i,5]:=clRed;//  Canvas.Free;
    end;
    /////////////////////////////////////
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Canvas: TCanvas;
      x,y,i,j: Integer;
    begin
      x:=20;
      Canvas:=TCanvas.Createa(self);
      for i:=1 to 50 do
      Canvas.Pixels[x+i,5]:=clRed;//
      Canvas.Free;
    end;
      

  20.   

    不好意思,上面错了!
    下面的正确,delphi7调试通过! :)
    procedure TForm1.Button1Click(Sender: TObject);
    var
      x,y,i,j: Integer;
    begin
      x:=20;
      for i:=1 to 50 do
      Canvas.Pixels[x+i,5]:=clRed;//
     end;
      

  21.   

    to fengyvn(fengyvn) :
    我在上海,你在哪?有空出来喝酒!
      

  22.   

    to liuziran(倒立旋风转的青蛙) 
    嘿,当然是在重庆了.
    要不然怎能娶楼主?
      

  23.   

    恐龙,一只大恐龙,一只大的食肉恐龙,一只大的孤独的食肉恐龙,一只大的嫁不出去的食肉恐龙.女恐龙,一只女恐龙,一只大的食肉女恐龙,一只大的孤独的食肉女恐龙,一只大的嫁不出去的食肉女恐龙.猎人,一群猎人,一群网络猎人,一群在CDSN网络上的猎人,一群在CSDN网络上的恐龙猎人。砰,砰砰,砰砰砰砰,砰砰砰砰砰砰,砰砰砰砰砰砰砰。恐龙就是这样灭亡的!!!!!!!!!!!!!
      

  24.   

    to  fengyvn(fengyvn) :
    晕,你准备娶楼主了啊?我到是觉得重庆男人找成都女人比较好,刚柔相济嘛,要不,两个烈性子在一起,一年不知要代谢多少锅碗瓢盆哦:)
      

  25.   

    to liuziran(倒立旋风转的青蛙) 
    哈哈,老兄弦外之音我听出来了......
    行,我忍痛割爱,让你和楼主来个刚柔相济~~~~~~~上海男人脾气不错.
      

  26.   

    to fengyvn(fengyvn) :
    我晕!我老家在扬州,只是在上海工作,MM在成都:),我对重庆人的了解,也是通过我MM和她朋友的介绍才知道一些的,事实上在现实中我没有和重庆的MM打过交道
      

  27.   

    把Canvas:=TCanvas.Create改成Canvas:=TCanvas.Create(from)或
    Canvas:=TCanvas.Create(application);
      

  28.   

    to fengyvn(fengyvn) :
    好哈,没问题