问题标签 [flicker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1109 浏览

windows-7 - 闪烁的 UI 问题 - 是什么导致 Windows 7 中的 DWM 在调用 SetWindowPos 时决定立即刷新?

我有一个自定义选项卡样式控件,它在内部通过单击选项卡时显示或隐藏相关页面来工作。

单击选项卡时发生的事情的基本顺序是

  1. 将相关页面放在前面
  2. 显示相关页面(通过使用适当的标志调用 SetWindowPos)
  3. 隐藏我们刚刚掩盖的旧页面
  4. 重新粉刷窗户

我的一些标签是用 DirectX 渲染的。在 Windows XP 下,一切正常,在选项卡之间切换时没有闪烁。但在 Windows 7(或 Vista)下,第 2 步中对 SetWindowPos 的调用会重绘窗口,并且在第 4 步之前会有未初始化的像素闪烁,通常是在我的应用程序开始运行之前桌面上的任何内容。

这只发生在 DirectX 页面上,但我不确定 DirectX 是什么导致了这种情况,如果有的话 - 页面之间还有其他差异,这只是明显的模式。我不确定这是真正的线索还是红鲱鱼。

GDI 页面直到第 4 步才会重新绘制。我逐步检查了代码并检查了 - 这不仅仅是 DWM 在第 2 步中使用了正确缓存的位图 - 它实际上直到第 4 步才重新绘制。

这是背景信息,但目前我不确定如何解决这个特定问题,所以我的问题更笼统:

有哪些因素会影响 SetWindowPos 决定是否重绘?

0 投票
1 回答
4487 浏览

android - 设置child.setvisibility(View.Visible)时Android主屏幕效果闪烁问题

我制作了一个示例应用程序来在 viewflipper 中翻阅不同的布局。

XML基本上是(伪代码)

在 Java 代码中,

当在屏幕上拖动时(就像主屏幕一样),上面的伪代码可以很好地在 viewflipper 内移动线性布局。

问题是当我执行 nextScreen.setVisibility(View.VISIBLE) 时。当下一个屏幕设置为可见时,它会在屏幕上闪烁,然后再移动到适当的位置。(我猜它在 0 位置可见。)

有没有办法加载下一个屏幕而不让它在屏幕上闪烁?我希望它在屏幕外加载(可见),这样它就不会闪烁。

非常感谢您的时间和帮助!

0 投票
4 回答
9563 浏览

android - SurfaceView 闪烁/撕裂

我试图弄清楚如何解决我的问题。我已阅读http://groups.google.com/group/android-developers/browse_thread/thread/a2aac88a08cb56c2/b7dff4ba388cd664?lnk=gst&q=SurfaceView#b7dff4ba388cd664哪种回答了我的问题,但据我所知,它是一种“运气不好”的答案。所以这是我的问题:

每当表面发生变化(例如方向等)时,我都会以正常方式(锁定/解锁AndPost)使用 SurfaceView 来绘制我的游戏背景的位图,并且我正在渲染一系列移动的圆圈(最多 30 个,半径为大约 25.f)。这些圆圈位置的 x,y 数据来自服务器,并且运行良好。所有圆形对象都存储在一个列表中,并且它们的位置会更新,注意确保此更新是同步的。但是,当我将这些圆圈绘制到屏幕上时(在 canvas.lock() 期间),大多数情况下它们渲染得很好,但偶尔(例如每隔几秒一次),一些圆圈似乎在一帧内短暂撕裂或闪烁。圆圈的数量始终是恒定的,所以这不是问题,并且圆圈列表没有并发修改(正如我所说,它是同步的)。我什至尝试在每个渲染循环上将所有这些圆圈绘制到位图上,并将该位图绘制到主画布上。这似乎对性能的影响更大(~13FPS 而不是直接在主画布上绘制圆圈时的~30FPS)。对不起,如果信息有点模糊,(试图让公司开心:p)但我只是想知道是否有人能给我一个线索?或者我只是运气不好。我应该注意,来自服务器的定位数据是实时数据,渲染反映这些实时位置至关重要。对不起,如果信息有点模糊,(试图让公司开心:p)但我只是想知道是否有人能给我一个线索?或者我只是运气不好。我应该注意,来自服务器的定位数据是实时数据,渲染反映这些实时位置至关重要。对不起,如果信息有点模糊,(试图让公司开心:p)但我只是想知道是否有人能给我一个线索?或者我只是运气不好。我应该注意,来自服务器的定位数据是实时数据,渲染反映这些实时位置至关重要。

谢谢你的帮助!克里斯

编辑:

很公平。这是来自渲染线程的 run()。

非常标准的东西(几乎是月球着陆器的副本:p)

很容易理解,如果方向发生变化,只需重新绘制背景位图并启动渲染线程。

最后:

再次感谢各位。克里斯

0 投票
0 回答
1309 浏览

android - Android viewflipper flicker

I have a ViewFlipper with multiple views added dynamically. I override onTouchEvent (and onInterceptTouchEvent) in order to get the down, move and up events on the views, so I know when to animate left and right.

Now everything works fine, except that there is a small flicker (one of the other views is displayed on top for a split second) at the beginning of the swipe. This only happens after the first swipe is done.

I looked at the source code for the Home screen app on Android, which helped a lot, but they don't use the ViewFlipper, so it's a little different.

Did anyone encounter the same problem?

Thanks!

0 投票
0 回答
268 浏览

c# - C#视频闪烁

我的代码有问题,它使用 VLC 界面显示视频。我还使用“表单透明度”功能在该视频顶部(全屏)显示叠加层。

这在我的 Windows 7 PC 上很好,但在 XP 机器上却闪烁不定。

如果您能帮我解决这个问题,我将不胜感激。我需要显示一个 UDP:// 流,所以我必须使用 VLC,但同时我需要在视频顶部显示我的程序信息......

0 投票
7 回答
9803 浏览

c# - winforms标签闪烁

我有一个非常闪烁的标签控件问题。

下面是一些重现问题的代码。

如何解决这个问题?

更新:前一种情况的解决方案(表单直接包含标签)是使 form.DoubleBuffered = true。但这不是一个通用的解决方案。比如SplitContainer里面有label怎么办?这是我的真实情况。

更新代码:

双缓冲标签.cs:

DoubleBufferedSplitContainer.cs:

Form1.cs:

Form1.Designer.cs:

程序.cs:

0 投票
2 回答
5526 浏览

delphi - 如何减少 Delphi 中的 PageControl 闪烁?

在 Delphi 2009 中,我发现 PageControl 的闪烁(在调整表单大小期间发生)可以通过将其DoubleBuffered属性设置为 true 来减少。

但是,如果我将控件添加到 PageControl 选项卡表中,无论它们的 DoubleBuffered 属性设置如何,它们都会闪烁。我也尝试过启用和不启用运行时主题。

0 投票
3 回答
10647 浏览

java - 防止 Java 在更新时重新绘制 JPanel 的内容

我有一个 JPanel,其中包含很多子组件。在向父 JPanel 更新\添加新组件时,我想防止它重新绘制,这如何实现?

0 投票
3 回答
8767 浏览

c++ - 带有 WS_EX_COMPOSITED 的无闪烁选项卡控件

我有一个使用 WTL 8.1 开发的用于 Windows XP SP3 的 VS2008 C++ 应用程序。我的应用程序包含一个选项卡控件,该控件在调整应用程序边框大小时闪烁。

我的窗口层次结构如下所示:

我正在尝试的解决方案是让CFrameWindowImpl派生类使用该WS_EX_COMPOSITED样式,并且它下面的所有窗口都使用该WS_EX_TRANSPARENT样式。不幸的是,这使得选项卡控件按钮显示为一个空的黑条,并且任何配置视图的控件根本不显示。

如果我删除WS_EX_COMPOSITEDandWS_EX_TRANSPARENT样式,表单会正确显示,但是CTabView在调整大小时,它下面的所有内容都会可怕地闪烁。

我需要更改什么来消除闪烁并正确绘制控件?

谢谢,保罗


编辑:让它工作。根据 Mark Ransom 的建议,我删除了所有WS_EX_TRANSPARENT样式。我WS_EX_COMPOSITED样式放在(包含在 中)。其他控件根据需要通过.CTabCtrlCTabViewWTL::CDoubleBufferImpl<>

0 投票
2 回答
5014 浏览

c# - 禁用背景绘画

我正在使用视觉工作室 2008

我有一个显示已处理图像的控件。每当更改处理参数时,我想更新这张图片,但不会闪烁。如果我可以在我绘画之前阻止窗户使该区域消隐,那么闪烁应该大部分消失。

问题是,如何做到这一点?

类似于:this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); 应该这样做,除了这需要我对 TableLayoutPanel 控件进行子类化(我花了一个小时试图做的事情),而且我所取得的成就没有任何效果。

有没有一种简单的方法来关闭我的控件的背景绘画?