如何在TabSheet1上用Canvas来画图!!!急!!!!!(100分)

  • 主题发起人 主题发起人 wangxian111
  • 开始时间 开始时间
W

wangxian111

Unregistered / Unconfirmed
GUEST, unregistred user!
用Canvas可以在form上画图,如何在TabSheet1上用Canvas来画图!!!
这问题很急,请快告诉我,我会很感谢的!!!
 
在TabSheet1上再放一个TImage的控件不就可以了?
 
对,也许只有这个办法,Tabsheet是由TControl派生到TWinControl再派生下来的,并没有提供画布属性
 
wincontrol都支持canvas

var c:TCanvas;
G:HDC;
begin
c:=TCanvas.Create;
c.Handle:=GetDC(TabSheet1.Handle);
c.LineTo(100,100);
c.Free;
end;
 
利用友元可以取得
var NewT :TWInControl;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
NewT :=TWInControl(TabControl1);
with TabControl1.Canvas do
begin
Pen.Color :=clRed;
moveto(0,0);
lineto(50,50);
end;
end;
 
smilelove:你的方法不行吧
 
谢谢menxin,这个问题我已经解决了。
能告诉我怎样把画好的图永久的保留在Tabsheet上呢??!!
 
将上面的画画内容写在Paint事件中.
 
写到Paint事件里还是不可以的,倒是写在Enter事件里还可以。
不过怎样做到在刚进入Form时Tabsheet上就已经画好了呢??
 
在ENTER里?不行,你放一个窗口在他上面,再移去就没了
正常是应该写在PAINT里的,虽然效率不太高,也还过得去,不知道你说不可以是什么意思





 
我的意思是写在Paint事件里时,从Tabsheet1到Tabsheet2后,如果再到Tabsheet1时,
画的内容就会消失掉的!!
 
这个问题别在讨论下去啦,结束吧,在讨论也没有什么好的结果。总之最好还是在上面放一个IMAGE,
写ONPAINT事件其实很麻烦,要不干脆作一个将TABLESHEET和IMAGE合成的控件
 
同意楼上的!!
这个我也试过很多遍!!
还是再timage.create 好些!!
可以剩掉很多麻烦!!
 
1:
self.TabSheet1.Brush.Bitmap :=image1.picture.bitmap;
2:
 
ONCHANGE时处理一下吧
 
ok,谢谢各位了:)
 
多人接受答案了。
 
后退
顶部