问题标签 [paintevent]

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 回答
3060 浏览

qt - 如何仅在调用 update 时触发paintEvent?

众所周知,QWidget::paintEvent当小部件变为可见或基本窗口中的任何事件发生时会自动触发。如果我只想paintEvent响应 发布,我应该怎么做update()

0 投票
0 回答
425 浏览

c# - 在另一个事件中调用绘画事件

我正在玩蛇游戏,但我在更新分数时遇到了问题!

我有一个玩家可以在其中移动的主要区域,这个区域有一个无效的绘制事件。我想显示这个区域之外的分数,所以我在我的主窗体上添加了一个新的绘制事件,它将分数绘制在窗体的顶部。

我的问题是如何在称为更新的计时器事件中调用第二个绘制事件?

第二次绘画活动:

0 投票
1 回答
322 浏览

css - 在转换为视图时提高位图图像解码的性能

我正在开发一个应用程序,其中涉及将幻灯片转换为视图作为主要导航机制。进来的第一张幻灯片涉及几个大约 2000 平方像素的叠加 PNG,并带有透明胶片,当图像进入视野时,会有一个明显的帧率卡顿。

使用 Chrome 开发工具的时间线功能,我已经确定,虽然大多数单独的 Paint 任务每个花费不到 5 毫秒,但重要的异常值是那些子任务包括解码 PNG 的 Paint 事件,这些事件一个接一个地花费 50 到 100 毫秒,似乎此刻图像映入眼帘。

理想情况下,我想提前解码位图,但我想不出一种在不实际呈现它们的情况下强制这种行为的方法。有任何想法吗?

0 投票
1 回答
1522 浏览

.net - 使用高分辨率背景图像调整表单大小时提高性能

我有一个带有一些控件的Winforms,主窗体有一个大图片作为背景,并启用了一个BackgroundImageLayout属性。Stretched

主要问题是由于背景图像,调整大小操作变得缓慢。

问题是调整具有图片和 Stretched BackgroundImageLayout 属性的 Winforms 的大小是一场噩梦!它开始缓慢,并且在调整表单大小时所有控件都在闪烁。

我试图减小图像大小,但我不能再减小它以不降低图像质量。

我也尝试过这样做,但并没有减少烦人的效果:

关于如何解决以大图片为背景调整winforms大小的缓慢和烦人的影响的任何想法?

编辑

为了了解我的问题,应用程序是这样的:

在此处输入图像描述

0 投票
1 回答
837 浏览

c# - 是否可以获得缩放/翻译的图形对象?

我正在使用 WinForms 为模拟编写可视化工具。可视化涉及围绕网格移动的各种对象。

到目前为止,我正在使用扩展 Panel 的自定义控件,并在 Paint 事件期间使用 Graphics 类进行自定义绘图。然而,一个令人恼火的是,我经常不得不从网格坐标缩放到 control.DisplayRectangle 坐标(换句话说,在网格中占用 2 个单元格的对象将占用 2 * (control.DisplayRectangle.Width /绘制时的水平网格宽度)像素)。

我想知道,有没有办法让 Graphics 对象为我做这些翻译,以便我可以在网格坐标中表达我的绘图并让它自动映射到物理坐标?

事实证明 Matrix 确实是关键(见接受的答案)。这是使它工作的代码:

0 投票
0 回答
339 浏览

opengl - OpenGL在虚拟机上绘制奇怪的行为

我开发了一个跨平台(Mac OS 和 Windows)OpenGL 应用程序。为此,我使用 Mac 和虚拟机(最后一个 VMWare 融合、W7 和来宾插件)。

在 Mac 部分,该程序按我的意愿工作,在 VM 部分,该paintGL()函数被调用的方式经常(在 mac 上每 16 毫秒调用一次,在 VM 上为 1 毫秒),这完全搞砸了我的工作。

没有人知道如何paintGL()在虚拟机上获得正常行为,还是我真的必须切换到物理机?

编辑:我尝试使用这种方式在 VMWare 上启用 VSync:mks.vsync="1"在 vmx 文件的末尾添加,但它没有改变任何东西......

0 投票
1 回答
1272 浏览

c# - 用户控件完全显示后显示消息框

我有一个control formWindows 用户控件类派生的。表单显示后,我需要message box根据条件显示。我尝试使用form paint event handler来执行此操作,但它似乎触发了两次。结果message box显示了两次。如何才能做到这一点?

0 投票
0 回答
501 浏览

qt - QWidget::repaint() 被“sticked”标志跳过 Qt::WA_UpdatesDisabled

所以,情况:

Qt 4.8.4, MSVS 2012.

我有六个QToolButton里面QWidget(这QWidget是另一个里面QWidget),QToolButtons位于QHBoxLayout

当我在其中一个上快速按下鼠标左键时QToolButton,然后将鼠标移出QToolButton并释放顶部父级上的鼠标按钮QWidget5 次或更多次。有一些概率QToolButton看起来很正常,但在其他状态下(悬停,按下)它不会重新粉刷。

搜索QTBUG- 没有结果。

QToolButton仍然发出 clicked、pressed、release 和 else 信号,但不会重新绘制。Qt在源代码和调试中的一些搜索提供了一些信息:

我继承QToolButton, reimlement enterEvent, leaveEvent, mousePressEvent, mouseReleaseEvent, paintEvent.

enterEvent, leaveEvent, mousePressEvent, mouseReleaseEvent- 仍在工作。 paintEvent- 忽略。

enterEvent在, leaveEvent, mousePressEvent,中添加更新或重绘mouseReleaseEvent:无效。

然后我使用break pintsm,并找到:在QWidget::repaint(const QRect &rect)检查标志updatesEnabled()时返回false,然后调用return from repaint !!! O_O好的,进去吧updatesEnabled()

这意味着Qt::WA_UpdatesDisabled设置为真。

Qt Assistant : 表示更新被阻止(包括系统后台)。该标志由 Qt 内核设置或清除。Qt::WA_UpdatesDisabled

嗯......我们有另一个标志Qt::WA_ForceUpdatesDisabled,我们可以改变它:

表示对小部件显式禁用更新;即,即使它的所有祖先都设置为启用更新状态,它也将保持禁用状态。这意味着WA_UpdatesDisabled。这是由 设置/清除的QWidget::setUpdatesEnabled()

内部setUpdatesEnabled()属性Qt::WA_UpdatesDisabled正在改变

使用QWidget::setUpdatesEnabled()仍然没有效果。

我知道,这个用例不常见QToolButton,我不尝试拖放。我的意思是简单的序列:mousePress- mouseMove- mouseRelease

有什么建议?

0 投票
1 回答
1870 浏览

c# - Windows窗体中如何在Panel中重新绘制平滑

如何重新绘制平滑的面板?

我正在使用一个计时器,它panel1.Invalidate();每 300 毫秒使面板()无效,然后在panel1_Paint我向该面板添加图像的事件中,问题是它看起来像是在跳跃,我需要像我一样快地在上面移动一个图像能够。

这是截屏问题的链接:http://screencast.com/t/HdtIV99YN

0 投票
3 回答
437 浏览

c++ - Qt paintEvent() 异常触发

我是 Qt 初学者。

所以我的 MainWindow 带有 aQSlider和 a QPixmap。我重新定义了paintEvent( QPaintEvent* event )

带插槽:

所以我只想在滑块的值改变时重新绘制像素图。但是我注意到每次当我对滑块进行鼠标移入或移出时,都会触发重绘。为什么会这样?

谢谢。