问题改为:怎样防止图片交替时的闪烁? (目前为止没有一人能把这100分拿去,期待你的出现) (100分)

  • 主题发起人 主题发起人 drawpharos
  • 开始时间 开始时间
D

drawpharos

Unregistered / Unconfirmed
GUEST, unregistred user!
原始问题:
怎样使TImage直接从Web上读取图片显示出来?类似于蚂蚁的广告条 该怎么做?
用loadfromfile出错!
[red]新问题[/red]
是这样的,我没有说清楚。
我想做一个实时图像传递的程序,用HTTP写以来传送动态图片,每秒钟刷新一次
用Web界面实现的花在刷新是图像有闪烁,因此想用其他方式来消除刷新过程中的闪烁,
我的思路是用两个TImage控件,一个定时器,一个Image在前面显示图像,另一个Image在后台读图像,
定时器时间一到,后台的Image放到前台来显示,前台的再放到后台去掉下一个画面
但是这样做还是有闪烁,该怎么办?
 
这样好像可以:
一般被浏览的网站都将与网站相关的图片存储在Windows/Template Internet File
目录下,可从这底下选择显示.
 
是啊,先保存到一个临时目录,再显示。
 
没有直接显示的办法吗?
 
按照我的想法,应该是分成两部分的,
第一部分,程序内建了一个下载的模块,在程序打开时,检测是否上网,如果上网,则用内建
的模块来下载特定的网站内的东西,编程的时候可以定呀,而且下载后的文件在哪里也
是可以定的。而且用一个定时器来每隔多久下载一次。
第二部分,就可以用loadfromfile了。。
 
各位的方法我很清楚,就是因为不想用两步来做,主要是不想使用过多的控件,
如果有个LoadFromURL就好了![:)]
 
那你可以用一个TWebBrowser控件呀
 
先下载,后显示
 
是这样的,我没有说清楚。
我想做一个实时图像传递的程序,用HTTP写以来传送动态图片,每秒钟刷新一次
用Web界面实现的花在刷新是图像有闪烁,因此想用其他方式来消除刷新过程中的闪烁,
我的思路是用两个TImage控件,一个定时器,一个Image在前面显示图像,另一个Image在后台读图像,
定时器时间一到,后台的Image放到前台来显示,前台的再放到后台去掉下一个画面
但是这样做还是有闪烁,该怎么办?
 
创建一个TBitmap,负责在后台读图像,用一个Image在前台负责显示
 
我想应该用两个image控件都同时显示,只是后台的image的visible为false;当调用时
再换回来!明白吗?
 
正因为这样做也闪烁才求救的!
[注]
当图片小到一定的程度就不闪了(一个大的广告banner的大小260*88)

[h1][red]如何使用直接写屏?[/red][/h1]
 
哎!别人告诉你很清楚了!先下载后显示,你非要钻牛角尖,你用两个Image当然会闪烁啦!
 
下载和刷新是两码事!下载以后显示也好,直接显示也好,
主要目的是要多幅图片交替显示,交替过程中如何消除闪烁?
用directX API还是用Canvas自己画?
 
drawpharos:
你还是用两个TImage对象,但是使其中一个的Visible属性设为false,也就是说用一个
TImage对象显示。
使用函数 Bitblt 即可。
假设两个TImage对象为Image1和Image2(Visible:=false) 那么你可以这样写:
var
HDC1,HDC2:HDC;
begin
Image2.LoadFromFile('...');
HDC1:=Image1.Canvas.Handle; //目标图象句柄
HDC2:=Image2.Canvas.Handle; //源图象句柄
BitBlt(HDC1,0,0,Image1.Width,Image1.Height,HDC2,0,0,SRCCOPY);
end;
改变一下,加个循环或像你那样用时钟控件就行了,
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
744
DelphiTeacher的专栏
D
D
回复
0
查看
718
DelphiTeacher的专栏
D
D
回复
0
查看
672
DelphiTeacher的专栏
D
D
回复
0
查看
545
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部