问题标签 [doublebuffered]

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 投票
1 回答
1690 浏览

java - Java SWT GC,如何强制刷新双缓冲图像?

有以下代码:

...执行底部指令后:shellGC.drawImage(offScreenImage, 0, 0);有时我会在 shellGC 组件上看到图像,有时 - 不是。只有当我“减慢”程序的执行速度时,我才会看到它,例如当我处于调试模式时。但是当它运行得很快时 - 它不会显示。我希望它强制显示,刷新或任何你的名字,这可能吗?

让我澄清一下,我想要实现的是实现一个基于帧的动画,但还不能播放它双缓冲,能够停止它,只显示暂停的特定单帧,等等......

谢谢你。

0 投票
1 回答
192 浏览

java - Java 双缓冲 - 仅每隔一帧绘制

我正在尝试开发一个全屏应用程序,但我遇到了双缓冲区问题。

我看到了严重的闪烁 - 似乎文本仅在每个其他缓冲区上绘制,其余缓冲区包含白色背景。可能是什么问题呢?

0 投票
1 回答
405 浏览

delphi - 双缓冲形式导致文本框角落出现黑点

当我在表单上有几个文本框并将表单的DoubleBuffered属性设置为 时True,它会使表单上的文本框在每个角落都有黑点。这是文本框的角在没有 DoubleBuffered父窗体的情况下的样子:

在此处输入图像描述

这是他们的 样子DoubleBuffered

在此处输入图像描述

我已经尝试在文本框本身上进行设置DoubleBufferedFalse但这根本没有帮助。我能做些什么来解决这个烦恼?

0 投票
0 回答
607 浏览

c# - C# LineShape 闪烁

我正在使用 LineShape(Microsoft VisualBasic Powerpacks 工具包的一部分)在图表上画一条线。我需要能够单击并拖动线。我目前可以这样做,但是在拖动线条时,它闪烁得很厉害。我认为使用 LineShape 比在图表上绘制线条图形更容易,因为我可以在拖动时更改端点的位置,但是这种闪烁对于我的应用程序来说真的很糟糕并且不可接受。

有谁知道如何在没有闪烁的情况下移动 LineShapes 或任何其他 Powerpack 形状?

PS DoubleBuffered 在我正在使用的表单上设置为 true。

谢谢!

更新

我无法在任何地方找到解决此问题的方法,因此我最终重做整个课程以在图表的 PostPaint 事件中绘制线条,并在我想移动线条时重新绘制。现在没有闪烁,但我很失望这个“工具”不能用于如此明显的应用程序。

再次感谢汉斯的回复。

0 投票
1 回答
2295 浏览

java - 为什么 getSize() 在这里对我不起作用,为什么在调整大小时会闪烁?

这是我第一次尝试使用BufferStrategy,我真的很感激一些提示。

1)为什么,在下面的代码中,在getSize()您调整窗口大小之前返回 0 的尺寸?如何立即检测窗口的大小?

2)为什么getSize()返回的东西不是窗口的完整尺寸?IE 为什么底部和右侧有一个黑色的条带?

3) 调整窗口大小时有没有办法消除闪烁?

0 投票
1 回答
2379 浏览

c# - 优化绘图以缓冲 C#

我正在尝试用 c# 为我的大学项目制作一个类似 photoshop 的应用程序到目前为止,我已经创建了一个名为 canvas 的自定义面板并重载了paint方法来绘制 canvasBuffer。该项目被称为油漆锐利。我有一个类 PaintSharpFile 存储图像的各个层。在 Canvas 控件上,我将选中的透明背景绘制到 canvasBuffer 上,然后将绘图文件中的图层绘制到 canvasBuffer 上。我终于画了这个缓冲区(双缓冲)。

现在,我正在编写画笔工具的代码。我记录了前一个点和当前点,然后在 canvasBuffer 本身上使用 Bresenham 的线算法在这两个点之间绘制一系列圆圈。这似乎工作得又快又好。

现在,由于画笔工具将在选定的活动图层上工作,我尝试将点绘制到图层的缓冲区。然后绘制所有图层的缓冲区canvasBuffer。这样做会使绘图变得非常缓慢。

这是代码

这是我的 onPaint 代码

这是将图片绘制到缓冲区

请告诉我如何阻止油漆滞后。

我尝试制作几个画布,每个画布都有一个图层图像。但由于它不是双缓冲的,因此会导致闪烁。

0 投票
4 回答
34136 浏览

java - 你如何在Java中为游戏加倍缓冲?

所以在我正在开发的游戏中,我有一个弹珠跟随鼠标,但是当它这样做时屏幕会闪烁。

背景包括两个 jpeg 和 9 个矩形。我将如何进行双重缓冲呢?这是主窗口的代码。

0 投票
1 回答
204 浏览

c++ - WM_EX_COMPOSITED 没有双缓冲

我正在尝试在 Win32 应用程序中实现双缓冲,因此我需要将窗口的控件从最后面的控件绘制到最前面。据我了解,WM_EX_COMPOSITED这样做,但它也会对自身进行双重缓冲1。如何在WS_EX_COMPOSITED没有双缓冲的情况下让窗口从下到上绘制?


我没有使用WM_EX_COMPOSITED双缓冲,因为我认为我可以手动做得更好,并且不会出现 DWM 闪烁等问题。

0 投票
1 回答
136 浏览

java - Java双缓冲——访问backimage

我正在尝试创建一个 java 游戏,它将BufferedImageBufferStrategy. 为此,我希望能够访问实际的背景图像(并对其执行效果),而不仅仅是从strategy.getDrawGraphics(). 在网上搜索通过awt源代码后,我无法找到该图像的实际位置或如何访问它。有人知道吗?我应该只使用自己的缓冲图像并绘制到该图像,然后将其粘贴到背景图像Graphics吗?

谢谢!

0 投票
0 回答
605 浏览

c++ - 如何正确处理 WS_EX_COMPOSITED?

有人可以解释如何创建处理由 WS_EX_COMPOSITED 引起的错误的 WndProc(错误在某些控件上是无穷无尽的 WM_PAINT)?

我用于 WS_EX_COMPOSITED 的所有内容是当我的应用程序窗口被隐藏以便能够对其进行截图时(如果 WS_EX_COMPOSITED 未设置,PrintWindow 失败),我得到截图但 CPU 使用率始终为 99%。

这是我从谷歌找到的信息: Never ending WM_PAINT loop with ATL CWindowImpl http://forums.codeguru.com/showthread.php?t=483719

但并没有给我太多的亮度......我添加到我的 WndProc 的唯一更改如下:

它降低了 CPU 使用率,但不能正确绘制所有控件。