问题标签 [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.
qt - 如何仅在调用 update 时触发paintEvent?
众所周知,QWidget::paintEvent
当小部件变为可见或基本窗口中的任何事件发生时会自动触发。如果我只想paintEvent
响应 发布,我应该怎么做update()
?
c# - 在另一个事件中调用绘画事件
我正在玩蛇游戏,但我在更新分数时遇到了问题!
我有一个玩家可以在其中移动的主要区域,这个区域有一个无效的绘制事件。我想显示这个区域之外的分数,所以我在我的主窗体上添加了一个新的绘制事件,它将分数绘制在窗体的顶部。
我的问题是如何在称为更新的计时器事件中调用第二个绘制事件?
第二次绘画活动:
css - 在转换为视图时提高位图图像解码的性能
我正在开发一个应用程序,其中涉及将幻灯片转换为视图作为主要导航机制。进来的第一张幻灯片涉及几个大约 2000 平方像素的叠加 PNG,并带有透明胶片,当图像进入视野时,会有一个明显的帧率卡顿。
使用 Chrome 开发工具的时间线功能,我已经确定,虽然大多数单独的 Paint 任务每个花费不到 5 毫秒,但重要的异常值是那些子任务包括解码 PNG 的 Paint 事件,这些事件一个接一个地花费 50 到 100 毫秒,似乎此刻图像映入眼帘。
理想情况下,我想提前解码位图,但我想不出一种在不实际呈现它们的情况下强制这种行为的方法。有任何想法吗?
.net - 使用高分辨率背景图像调整表单大小时提高性能
我有一个带有一些控件的Winforms,主窗体有一个大图片作为背景,并启用了一个BackgroundImageLayout
属性。Stretched
主要问题是由于背景图像,调整大小操作变得缓慢。
问题是调整具有图片和 Stretched BackgroundImageLayout 属性的 Winforms 的大小是一场噩梦!它开始缓慢,并且在调整表单大小时所有控件都在闪烁。
我试图减小图像大小,但我不能再减小它以不降低图像质量。
我也尝试过这样做,但并没有减少烦人的效果:
关于如何解决以大图片为背景调整winforms大小的缓慢和烦人的影响的任何想法?
编辑
为了了解我的问题,应用程序是这样的:
c# - 是否可以获得缩放/翻译的图形对象?
我正在使用 WinForms 为模拟编写可视化工具。可视化涉及围绕网格移动的各种对象。
到目前为止,我正在使用扩展 Panel 的自定义控件,并在 Paint 事件期间使用 Graphics 类进行自定义绘图。然而,一个令人恼火的是,我经常不得不从网格坐标缩放到 control.DisplayRectangle 坐标(换句话说,在网格中占用 2 个单元格的对象将占用 2 * (control.DisplayRectangle.Width /绘制时的水平网格宽度)像素)。
我想知道,有没有办法让 Graphics 对象为我做这些翻译,以便我可以在网格坐标中表达我的绘图并让它自动映射到物理坐标?
事实证明 Matrix 确实是关键(见接受的答案)。这是使它工作的代码:
opengl - OpenGL在虚拟机上绘制奇怪的行为
我开发了一个跨平台(Mac OS 和 Windows)OpenGL 应用程序。为此,我使用 Mac 和虚拟机(最后一个 VMWare 融合、W7 和来宾插件)。
在 Mac 部分,该程序按我的意愿工作,在 VM 部分,该paintGL()
函数被调用的方式经常(在 mac 上每 16 毫秒调用一次,在 VM 上为 1 毫秒),这完全搞砸了我的工作。
没有人知道如何paintGL()
在虚拟机上获得正常行为,还是我真的必须切换到物理机?
编辑:我尝试使用这种方式在 VMWare 上启用 VSync:mks.vsync="1"
在 vmx 文件的末尾添加,但它没有改变任何东西......
c# - 用户控件完全显示后显示消息框
我有一个control form
从Windows 用户控件类派生的。表单显示后,我需要message box
根据条件显示。我尝试使用form paint event handler
来执行此操作,但它似乎触发了两次。结果message box
显示了两次。如何才能做到这一点?
qt - QWidget::repaint() 被“sticked”标志跳过 Qt::WA_UpdatesDisabled
所以,情况:
Qt 4.8.4
, MSVS 2012
.
我有六个QToolButton
里面QWidget
(这QWidget
是另一个里面QWidget
),QToolButtons
位于QHBoxLayout
。
当我在其中一个上快速按下鼠标左键时QToolButton
,然后将鼠标移出QToolButton
并释放顶部父级上的鼠标按钮QWidget
5 次或更多次。有一些概率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
。
有什么建议?
c# - Windows窗体中如何在Panel中重新绘制平滑
如何重新绘制平滑的面板?
我正在使用一个计时器,它panel1.Invalidate();
每 300 毫秒使面板()无效,然后在panel1_Paint
我向该面板添加图像的事件中,问题是它看起来像是在跳跃,我需要像我一样快地在上面移动一个图像能够。
这是截屏问题的链接:http://screencast.com/t/HdtIV99YN
c++ - Qt paintEvent() 异常触发
我是 Qt 初学者。
所以我的 MainWindow 带有 aQSlider
和 a QPixmap
。我重新定义了paintEvent( QPaintEvent* event )
和
带插槽:
所以我只想在滑块的值改变时重新绘制像素图。但是我注意到每次当我对滑块进行鼠标移入或移出时,都会触发重绘。为什么会这样?
谢谢。