看来这个问题还是比较麻烦的.
我原来设计的目的是这样的:
我要做一个能够在鼠标移入时从左向右出现的按钮,
鼠标移出时它再慢慢的从右向左消失.按钮是用Image实现
我的初步方法是MouseEnter时,用CopyRect:
canvas.CopyRect(rect(intLeft,intTop,intRight,intBottom),
valBitmap.Canvas,
rect(0,0,valBitmap.Width,valBitmap.Height));
其中intLeft,intTop,intRight,intBottom是计算出来当前要显示的部分
比如对于一个120*40的图象,分12次显示,那么第一次显示宽度在110到120之间的图象,
第二次显示100到120之间的部分...
问题在于MouseLeave的时候,必须恢复原来的背景,我仍想用CopyRect函数,但是不行
canvas.CopyRect(rect(0,0,valBitmap.Width,valBitmap.Height),
valSaveBitmap.Canvas,
rect(0,0,valBitmap.Width,valBitmap.Height));
可以工作,但是valSaveBitmap怎么得到呢?我是用下面的代码:
valSaveBitmap.Canvas.CopyRect(rect(0,0,valBitmap.Width,valBitmap.Height),
TForm(Parent).canvas,rect(Left,Top,valSaveBitmap.Width,valBitmap.Height));
显然是有问题的. Parent不一定是TForm,可能是TPanel或者TImage等等,不一定有Canvas的属性.
所有运行时会出错.
后来我想在控件创建的时候,再new一个TImage,然后给它赋值,通过改变TImage的Left来实现
从左向右的显示.但这样要求TImage的Parent是我所创建的控件,可是它是从TGraphicControl
派生的. 之所以问如题的问题,是后来我实在没有办法了,就想干脆我找出已经有的控件
作为TImage的Parent算了. 真是一个其笨无比的方法.
请大家帮忙看看有什么办法可以解决这个问题吧! 我太笨了,呜呜....
谢谢大家帮忙了.....