不能完全刷新Canvas的问题 (20分)

  • 主题发起人 主题发起人 yanghai0437
  • 开始时间 开始时间
Y

yanghai0437

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个窗口上放了两个pannel,中间放了一个spliter好让两个pannel可以左右拖动,
我在右边的pannel上放了一个image控件,它的align属性是top,

我要用程序在image上画线和写字,当pannel的宽度改变时,image的宽度也会跟着改变,
这个时候我发现了我的问题:
我假设在第一次绘画时的宽度是500,当我拖动spliter改变宽度时问题出现了,当我
减少宽度时(< 500)还能全部重绘image窗口,但是,当我加大宽度时(> 500)我发现它还是
只能重绘500宽度的窗口,不知道为什么,我跟踪程序发现得到的宽度是正确的。
我用的函数是TCanvas.FillRect(CRect) 和TCanvas.Rectangle(CRect),这两个函数都是
一样的效果。
 
with TRadioButton.Create(self) do
begin
Parent:=GroupBox1;
Caption:='11111';
top := 10;
end;

with TRadioButton.Create(self) do
begin
Parent:=GroupBox1;
Caption:='22222222';
top :=30;
end;

很正常啊。你的parent没设好吧。
 
parent属性是同一个Groupbox
我已经设置好了
 
这种情况我也遇到,用Image不行,你用Paintbox试试。
我用Paintbox是可以的,定义两个全局变量(宽度与高度),在spliter的OnMoved的事件里重新获取高度与宽度,
以后就用这两个自定义的宽度和高度进行操作。
 
在spliter的OnMoved的事件里加入:
image1.Picture.Bitmap.Width:=image1.Width;
image1.Picture.Bitmap.height:=image1.height;
 
接受答案了.
 
后退
顶部