关于panel重绘的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 canlin924
  • 开始时间 开始时间
C

canlin924

Unregistered / Unconfirmed
GUEST, unregistred user!
我的问题是,我用一个panl做容器,在里面播放视频文件,但现在我要把视频图象给用一条线给隔开来,我采用的是下面的方法
with panel.canvas do
begin
moveto(30,0);
lineto(30,100);
end;
如果我不播放视频文件的话这根线能在界面上显示,可当我播放视频文件的话播放的视频图象就将把这根线给遮住,请教各位大虾有没有好的解决办法,最好能给出源代码.
 
我的问题是,我用一个panl做容器,在里面播放视频文件,但现在我要把视频图象给用一条线给隔开来,我采用的是下面的方法
with panel.canvas do
begin
moveto(30,0);
lineto(30,100);
end;
如果我不播放视频文件的话这根线能在界面上显示,可当我播放视频文件的话播放的视频图象就将把这根线给遮住,请教各位大虾有没有好的解决办法,最好能给出源代码.
 
你这样做是不行的,因为视频播放的绘制层次高于普通Windows的Canvas.你只能通过增加视频播放控件的虑境来增加视频播放效果
 
to zqw0117
不知有什么其他的好的解决办法,老总天天催
 
这方面我也不熟.只是前段时间有朋友弄过DSPACK的视频播放虑境的.
 
to zqw0117
我的目的是要把视频图象根据实际的需要裁剪出一个矩形区域来保存,但是在界面上要有一个关于这个矩形大小的提示点,我在内部从视频图象中把这个矩形区域给抠出来,但就是这个界面提示的矩形框怎么都画不出来
 
可能ZQW说的有道理,实际中发现播放视频确实很多软件图象内容都是在顶部的。要重绘可能比较烦

能不能这样取巧一下:做个窗口,窗口内容就是一条线,然后把窗口放置在最TOP?

请问楼主,我的ID可以回帖,但不能提问,是什么原因呀?
 
to 释迦,
发帖问题请联系DelphiBBS斑竹.
to 楼主
释迦的建议可行
 
To canlin924:
你可以直接在panel上画线?
 
to leotonny
我最开始采用的方法就是在panel上画线,但是一样会被遮住
 
to 释迦
采用窗口的话 这样做出来的效果很差,我的要求是要一个淡隐效果的矩形虚线框
 
直接放个Image上去可以么
 
这个问题蛮难的,我开始也这样想。我用透明窗口+top,结果是不播放视频效果还不错,播放时视频就被盖住了
 
to kklili
直接放个image和在panel里画线是一样的道理,按zqw0117的说法 视频播放的绘制层次高于普通Windows的Canvas,所以再怎么画都会被遮住
 
我的透明窗体突然又可以了,但就是屏幕闪动太厉害
 
我觉得问题.在于你的 用的 panel 做容器进行视频播放.
如果你将视频源的视频流转成图象 一张张在 image 里面显示.
效果肯定也不会太差吧. 这样在 image 上面用其它控件做线框肯定行.
 
谢谢各位的热心帮助,原来的问题解决了,还是按zqw0117的方法,通过增加视频播放控件的虑境来增加视频播放效果,不好意思,追加一个问题,还是关于panel的,我在panel的canvas里画的图形,这时候如果我再执行像opendialog的execute,整个panel就会重绘,我原来画好的区域会被全部覆盖掉,就算我在execute后再重新在panel把图形绘制一遍,但在我文件打开对话框打开的过程中这段时间里,因为我的重绘还没执行,所以这时候整个panel又变成初始的摸样,因为我画的东西比较多,所以界面会有很明显的变化,请问有没有什么好的办法在我打开文件对话框的过程中可以保持整个panel不被重绘(注意是打开的过程中,我在文件打开后可以进行重绘).我试过在调用dialog.execute的前面和后面分别加上 panel.canvas.lock和unlock,但是没有效果.
 
你把绘制的代码写到OnPaint事件里啊!只要对象要重绘都会触发这个事件。要不就继承个Panel,在继承的Panel的Paint方法里面画。
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
943
DelphiTeacher的专栏
D
D
回复
0
查看
895
DelphiTeacher的专栏
D
D
回复
0
查看
866
DelphiTeacher的专栏
D
后退
顶部