···canvas的一个问题!(10分)

  • 主题发起人 主题发起人 心碎了才懂
  • 开始时间 开始时间

心碎了才懂

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
begin
with panel1 do
begin
panel1.canvas.Pen.Width:=1;
panel1.canvas.Pen.Color:=clblue;
panel1.canvas.MoveTo(0,0);
panel1.canvas.LineTo(panel1.Width,panel1.Height);
end;
end;
我想在panel1上画一条直线,但是以上代码不能编译,请问错在哪儿?
编译时报错:[Pascal Error] Unit1.pas(32): E2362 Cannot access protected symbol TCustomControl.Canvas
 
怎么没人会阿?
 
procedure TForm1.Button1Click(Sender: TObject);
begin
with panel1 do
begin
canvas.Pen.Width:=1;
canvas.Pen.Color:=clblue;
canvas.MoveTo(0,0);
canvas.LineTo(panel1.Width,panel1.Height);
end;
end;
最起码应该这样写
 
这样写就划线到form1上了!
 
你把panel1改成image吧。
 
好,我试试!
 
procedure TForm1.Button1Click(Sender: TObject);
begin
with image1 do
begin
canvas.Pen.Width:=1;
canvas.Pen.Color:=clblue;
canvas.MoveTo(0,0);
canvas.LineTo(image1.Width,image1.Height);
end;
end;
这回OK了,不过用panel为什么不对呢?
 
panel 没有canvas属性
 
我刚才测试panel不能使用canvas,
版本的d7
 
最好用TPaintBox来作画图载体
with PaintBox1 do
begin
canvas.Pen.Width:=1;
canvas.Pen.Color:=clblue;
canvas.MoveTo(0,0);
canvas.LineTo(PaintBox1.Width,PaintBox1.Height);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
c:TcontrolCanvas;
begin
c:=TcontrolCanvas.create;
c.control:=panel1;
with c do
begin
Pen.Width:=1;
Pen.Color:=clblue;
MoveTo(0,0);
LineTo(panel1.Width,panel1.Height);
end;
end;
试一下看行不
qq:494558048
 
上面c,记住不用了要free
 
panel 没有canvas属性 也可以画 你取 他的hdc然后用api 画就可以panel 有canvas 只是delphi 没有透出来给我们使用 或者你改下组建 不过很麻烦 分数有点少 呵呵
 
type
TMYPanel=class(TPanel)
public
property Canvas;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
TMYPanel(Panel1).Canvas.Pen.Color := clblack;
TMYPanel(Panel1).Canvas.Pen.Width := 3;
TMYPanel(Panel1).Canvas.MoveTo(0,0);
TMYPanel(Panel1).Canvas.LineTo(panel1.Width,panel1.Height);
end;
 
ql 能流下qq 吗 ?向你学习 或者你加我 qq: 439661788
 
后退
顶部