首页 新闻 赞助 找找看

WPF 播放视频时,单击播放区域,改变表示焦点的小矩形颜色,视频闪烁

0
悬赏园豆:20 [已关闭问题] 关闭于 2012-02-17 09:49

大家好,我现在遇到了问题,

1、做的是视频监控,显示视频的部分是调用别人写的DLL库,我只需要将窗口句柄和视频显示区域的Rect结构传入接口就行了。DLL库的视频图像的显示是DDraw实现的

2、现在主窗口上播放4*4格式的16路视频,我需要在每个播放窗口的下方放个20像素高的小矩形以表示哪个是焦点窗口,如果单击了哪个视频,下方的小矩形就变蓝色,其余的小矩形变灰色。代码用的是Rectangle.Fill = new SolidColorBrush(Colors.Gray);

现在问题是:如果16路都播放了视频,我单击视频窗口的时候,要改变窗口下方小矩形的颜色,跟小矩形相邻的几路视频会出现闪烁,如果不去填充颜色,视频时不会闪的,我想应该是DLL库的DDraw和Rectangle.Fill出现了什么冲突

我在网上查了好久,我不明白为什么WPF也是用的DirectDraw方式绘制UI的,我的视频显示也是DDraw方式一帧帧显示的,为什么还会出现闪烁呢,请大家帮帮我吧,给个思路也好,如果您知道WPF的重绘机制,请不吝赐教哦!

祝新年快乐!

 

ps:

这个问题是不好回答,我发现DLL库绘制视频帧的时候,我的焦点框用GDI方式填充,无论怎么点视频都是不闪的,但是Graphics类绘制图形是即时的,放个小窗口在上面拖动,就会把绘制的焦点小矩形给擦掉,很苦闷啊,现在就又要去响应小窗口的拖动事件,不停的用InvalidateVisual去强制重绘,这个方法实在是太笨了,实属下下下策,路过的大大们有什么见解的话,请指教下下哦,还是要继续好好学习,天天向上!
 
还有,焦点小窗口就算是重载OnRender接口,用参数DrawingContext去DrawRectangle也是闪的,就只有Graphics类去绘制不闪,呜呜
Lirica的主页 Lirica | 初学一级 | 园豆:180
提问于:2012-01-06 11:17
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册