问题标签 [double-buffering]
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.
c - 选项卡控件上闪烁 - WIN32
我有一个 WIN32 应用程序。它的主窗口是hwndMain
,它的一个子窗口是hwndView
。上有一个选项卡控件hwndTab
。hwndView
当我调整大小时hwndMain
,hwndView
调整大小等hwndTab
。它闪烁一点,但不多。
我曾尝试使用WS_EX_COMPOSITED
样式( for hwndView
or hwndTab
),但它只是给了我空白窗口。我尝试使用WS_EX_TRANSPARENT
它并解决了闪烁问题,但是当窗口大小调整为更大时,子项的更新速度非常慢,例如我看到黑色区域一秒钟,然后该区域被更新。
我已经TreeView
通过使用WS_CHIPCHILDREN
样式成功解决了闪烁问题。(见下文备注)。但是使用WS_CHIPCHILDREN
stlye forhwndView
并不能解决选项卡控件的闪烁问题。
WM_ERASEBKGND
我也关注了Not set hbrBackground
。
我想使用双缓冲区进行选项卡控制,但我找不到用于此目的的教程。我找到的所有教程都是:在WM_PAINT
创建CompatibleDC
和之后,在和......CompatibleBitmap
中画出你想要的东西;memdc
但我不想在WM_PAINT
for中进行任何自定义绘图hwndTab
。我只想让选项卡控件完成这项工作,但只显示最终结果。
有人可以告诉我一个小例子,如何双缓冲选项卡控件(如果您认为这将解决选项卡控件的闪烁问题),语言为c
+ winapi
,因为我不了解 C#、Net 等.
备注:对于我的 TreeView,它是 window 的子级hwndContainer
。它被创建为:
使用WS_CLIPCHILDREN
修复闪烁,即使我不使用双缓冲。但是放在
WS_CLIPCHILDREN
第一个参数位置就很奇怪了。如果我把它放在 WS_CHILD 之后,即
,然后闪烁仍然发生。
所以我在创建时也尝试使用第一种方式hwndView
,但它只是给出了空白的白色窗口。我真的对这些东西感到困惑。
WS_EX_COMPOSITED
这是我使用时的空白窗口图片hwndView
。我用的时候没有这个问题hwndContainer
。
hwndView
实际上有两个孩子:一个选项卡控件hwndTab
和一个有自己的双缓冲区和绘图的孩子。我不确定这是否会导致使用WS_EX_COMPOSITED
.
c - 调整窗口大小时是否可以完全消除闪烁?
通常,即使使用双缓冲,在调整窗口大小时,似乎也不可避免地会发生闪烁。
第一步,原始窗口。
第 2 步,调整窗口大小,但未绘制额外区域。
第 3 步,调整窗口大小,并绘制多余的区域。
是否有可能以某种方式隐藏 setp 2?我可以在绘画动作完成之前暂停调整大小的过程吗?
这是一个例子:
是否可以消除闪烁?
java - 使用双缓冲 Java Applet 停止小程序闪烁
很抱歉一直问关于我的程序的问题,但我想我快到了,我正在自学 Java,所以请多多包涵。我正在创建一个小程序,当狗对象靠近绵羊时,它会以随机方向在屏幕上移动绵羊对象。让羊朝随机方向移动需要一些工作,在你们这里的帮助下,它现在可以工作(有点),但我现在要做的是阻止它在我将对象拖过屏幕时闪烁。我读过关于双缓冲的文章,我可以让它适用于在主类的paint方法中绘制的项目,但不能让它适用于我的羊和狗对象,这些对象在不同的类中被定义为单独的对象。任何帮助都感激不尽。这是我的代码:
java - Java:双缓冲图形和菜单栏不能一起工作
我仍然需要学习很多关于编程(java)的知识,到目前为止我主要使用图形。我尝试制作一个菜单栏,它奏效了。但是我在同时使用 Graphics 和 JMenubar 时遇到了问题。首先我可以绘制图形,但是在查看了一些网站(包括这个)之后,我设法让图形工作。不幸的是,不是双缓冲。
这就是我一直双缓冲的方式,我不知道这是否是双缓冲的坏方法:
这是我的代码,只有菜单栏和图形。主类:
绘画类:
我希望你能帮助我,我一直在寻找一段时间,我找到了一些双缓冲的方法,但它们没有奏效。其中一些是 BufferedImage 和 BufferStrategy。
感谢您的时间。
java - getGraphics() 阻止我的游戏开始
我正在学习双缓冲,我从老师那里得到的书告诉我要写我写的东西。但是当 java 试图从图像中获取图形对象时,它会崩溃。
框架 = 图像
引擎 = 图形
错误
游戏.java
引擎.java
wpf - WPF ElementHost 在启用双缓冲的情况下无法绘制
嗨,我遇到了与此问题类似的问题。
对我来说不同的是,我在 WinForms-MainForm 中使用“CreateParams-Method”来强制双缓冲。代码如下(例如DataGridView 绘制错误之后):
我现在的问题是,只要激活了这个 CreateParams,我的 WPF-ElementHost 在 WinForms-Usercontrol 中的内容只有在有 mouseover 事件时才会被绘制。
简短描述:用户控件“打开”但它是透明的。在我用鼠标移过它之后,例如 ComboBoxes 被绘制出来。
一旦我注释掉 CreateParams,一切正常(使用 WPF-ElementHost)。是否可以为 WPFElementHost 停用/使用不同的 CreateParams?
vb.net - VB.NET 用户控件缓冲图形
我想创建一个具有缓冲图形的基本用户控件。但是有些不对劲,它停在 Using gr As Graphics = Graphics.FromImage(m_Buffer) 这一行
我什至设法使 VS2010 崩溃。这就是为什么我怀疑我引入了一些错误。我从示例代码中复制了大部分部分,我猜至少 OnPaint 从未被调用,因为它不是我可以在设计器中选择的事件之一。
非常感谢你的帮助!
结束类
c - lpc1788上的双缓冲
我面临着很大的担忧。我目前正在参加一个三明治课程,我正在自学如何在嵌入式系统上开发软件——碰巧是在 open1788 板上。
我计划实现双缓冲功能,因为我可以在我的 LCD 屏幕上看到闪烁。确实可以在绘制时查看形状!
使用双缓冲,重绘整个屏幕的速度足够快。也许我应该深入研究管理剪辑,这样我只需要重绘需要的部分屏幕?但这不是问题。
所以,我写了几个函数来处理双缓冲选项的选择。如果我不希望软件使用双缓冲,那么我不会为它分配内存;否则我会。
问题是为堆分配的默认空间高达 1024 字节。我的临时缓冲区的长度为 261120 字节!(481 像素宽每 272 像素高,每个 16bpp)。
结果,malloc 返回 NULL。
我采取的第一个解决方案是放置一个静态缓冲区,我的意思是:
但明显的缺点是即使您不使用双缓冲,它仍然会被分配。
第二种解决方案是编辑配置文件以使堆更大,每替换 1024 字节,例如 1048576 字节 (0x100000)。我不喜欢这个解决方案,因为我应该专注于节省内存空间。
也许我非常怀念嵌入式编程技能?根据这一点,最好的解决方案是什么?我怎样才能取得进步?我不会告诉你我阅读和挖掘数据表的杂乱能力。
如果有人可以为我提供初学者参考资料,我将非常感激,这些参考资料主要适用于我正在编程的电路板。
提前致谢!
java - 简单的自定义绘画错误
我刚开始重新编码,我想我忘记了如何加倍缓冲。这是我现在拥有的代码,我不确定我缺少什么。当我启动它时,只有一个白色的屏幕,没有椭圆形。
渲染的错误是什么?
更新:编译错误@Override
c# - BufferedGraphics 闪烁
我试图实现自定义双缓冲,但它会导致闪烁。
这是控件(从控件继承的自定义控件)构造函数中的代码:
OnPaint 事件:
此外,在调整与缓冲相关的大小时会激活此代码:
Draw 方法比较复杂,但它首先用 BackColor 填充控件,其他无关紧要。
我有时可以用眼睛发现闪烁,主要是在调整窗口大小时。据我所知,黑色首先在控件上绘制,然后是缓冲区中的图形,它会导致闪烁。但是,BackColor 绝不是黑色。
该怎么做才能阻止这种情况?