关于TImage的显示无闪烁的问题

peterlee99 2002-04-23 04:19:33
由于不支持动画Gif,所以向这样实现一个动画:一个静态BMP透明显示,并且进行缩放显示。

用Timage装入一个BMP,设置为透明,指定透明color是pixel[1,1],proportional为true。
设置一个Timer,每100ms一次,在OnTimer中,作:
重新设置Timage的Left,Top,Height和Width,以次来改变BMP的大小。
但是这样有个问题,闪烁的太厉害。

于是,采用另外的方法,将该Timage设置为不可见,然后在Ontimer中,改变该Tiamge的大小,以改变BMP的大小,然后new 一个TBitmap,用
TBitmap->Canvas->CopyRect()将图像拷贝进来,然后用Form1->canvas->draw画出来。这样能够避免闪烁,但是画出来的BMP,其背景成了黑色,而我希望它是透明的(因为还有背景)。请问,应该如何处理,才能显示透明的背景?

谢了,一定给分。
...全文
68 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
peterlee99 2002-04-24
  • 打赏
  • 举报
回复
wuhanzhoubin(wuhanzhoubin)
我已经这么试了,还是不行。

谢谢 hdaq(一生何求) , 你给的方法很好,简单实用。奇怪的是,Form的属性
中(显示在属性栏中)没有DoubleBuffered。呵呵。

给分了。
hdaq 2002-04-23
  • 打赏
  • 举报
回复

“重新设置Timage的Left,Top,Height和Width,以次来改变BMP的大小”方法时试一下加上以下代码

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Image1->Parent->DoubleBuffered = true;
//或Form1->DoubleBuffered = true;
}
//---------------------------------------------------------------------------
会有效果的
aawolf 2002-04-23
  • 打赏
  • 举报
回复
建议你不要用IMAGE控件,那东西拖动都闪烁,还是直接用TBitmap在Form上画比较好.
TangZH001 2002-04-23
  • 打赏
  • 举报
回复
为什么不用动画(AVI)文件
Behard 2002-04-23
  • 打赏
  • 举报
回复
如果是这样的话,可能不能直接使用 Image 控件
whitetiger8 2002-04-23
  • 打赏
  • 举报
回复
不太可能实现吧。好像很难
alex_deng 2002-04-23
  • 打赏
  • 举报
回复
1。每100ms一次,在OnTimer中,

--------时间设定长一些不行吗?
wuhanzhoubin 2002-04-23
  • 打赏
  • 举报
回复
TBitmap->Canvas->CopyRect()将图像拷贝进来后,再指定透明color
whitelion 2002-04-23
  • 打赏
  • 举报
回复
你试试将image->canvas->brush->style=bsClear
我没有用过

13,873

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧