问题标签 [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 回答
3026 浏览

c++ - C ++ / Qt:更改正在绘制的QImage(的大小)

如果我提供了不必要的详细信息,我深表歉意。我有一个Canvas看起来像这样的类:

Canvas::paintEvent(QPaintEvent *)功能是这样实现的:

所以这个类CanvasDelegate看起来像这样:

CanvasDelegate 的构造函数如下:

我不确定这是有史以来最好的设计,但这不是我的问题(尽管欢迎任何评论)。Canvas我的问题是调整窗口 ( ) 大小时会发生什么。这是我的代码的样子:

问题是当我运行程序时,它崩溃了。显然在painter->eraseRect(0, 0, sizeX, sizeY);调用时存在分段错误void CanvasDelegate::rescale(int sizeX, int sizeY)。我不明白为什么,我不明白问题是什么。

在以前的版本中,我编写了以下内容(现在在我看来,这比必要的更复杂):

但这不起作用:我收到 Qt 错误QPaintDevice: Cannot destroy paint device that is beingpainting。如果我删除delete oldImage;and delete oldPainter;,一切正常,但这是一个令人作呕的内存泄漏,不是吗。

有人明白为什么我写的东西不起作用,我需要做什么吗?

非常感谢您的关注。

0 投票
0 回答
409 浏览

macos - Qt 5.3.2 / OSX 无法在paintEvent / Flickering 中使用本机CGContext 绘图

对于我的一生,我不能在 Qt 5 的paintEvent 中使用本机绘图。

我创建了一个简单的例子,应该用某种颜色(RGB 240,120,60)填充整个矩形。启动时(当然是在 Mac 上,我使用的是 10.9),窗口会在白色和所需的“橙色”颜色之间闪烁几次,然后保持白色。你知道为什么我的画不持久吗?在 Qt4 中一种非常相似的绘图方式工作得很好。

这是我的示例:

nativepainter.pro:

主.cpp:

nativepainter.h:

nativepainter.cpp:

可以自己编译看看,你们有什么想法吗?

问候和感谢,

尼尔斯

0 投票
1 回答
1368 浏览

c++ - Qt paintEvent 崩溃

我试图在我的小部件上绘制简单的板。

当我试图自动化时,我的paintEvent 崩溃了。我认为这是由内部的 for 循环引起的,对吗?其他方式怎么画?

0 投票
1 回答
477 浏览

c# - 在 C# 中绘制框架以避免闪烁

我刚刚开始学习 C#,我想就绘画方面的良好做法寻求建议,以避免闪烁。

我使用了这里提到的方法,例如双缓冲和打开WS_EX_COMPOSITED,但对我有用的方法是:

调用PaintEventHandler

并使用PaintEventArgs绘制:

并且PaintEventHandler是通过 a Refresh()on a触发的Timer

但是,我担心的是,这种绘图方式需要我对PaintEventHandler表单上的每个控件都有一个。

因此,我想问是否有更优雅的方式来实现这一点。

谢谢!

0 投票
1 回答
888 浏览

qt - Qt5:在 mouseMoveEvent 中的 update() 之后不调用paintEvent

我正在使用 QAbstractScrollArea + 自定义 QWidget 衍生小部件作为“the”小部件(覆盖了 sizeHint())。应用程序需要在 mouseMove 期间不断更新 QWidget 内容(有点拖动,但不完全是,它是一个在对象之间绘制线条的绘图工具,因此需要更改鼠标光标 + 需要动态绘制线条) .

该应用程序运行良好,例如我可以正确呈现内容,滚动条可见,我可以在 scrollContentsBy 期间手动更新视口等。

然而,无论我在 mouseMoveEvent 中手动触发 update()(或 repaint())调用,paintEvent 都只会在“拖动”过程结束后调用,例如 mouseReleaseEvent 被触发。

我不知道为什么会发生这种情况。显然,如果我直接在 mouseMoveEvent 中进行更新,它将被 QPainter 拒绝(因为我无法在 mouseMoveEvent 中实例化 QPainter - Qt 在尝试这样做时会丢弃“不再调用paintEngine”)。

欢迎任何建议:)谢谢,

0 投票
1 回答
215 浏览

vb.net - 按下按钮时创建一条线

我想“实时”制作一个绘图程序。我的表单中有两个文本框和一个按钮。我想在文本框中输入两个值,按下按钮并画线。

我试图从b_Clickb是按钮)调用,Form_paint但不知道如何处理sendere参数。

有没有办法做到这一点?

0 投票
1 回答
1255 浏览

python - 平移和缩放所有 QWidget 子项

我想要一个可以在其中平移和缩放的 QWidget。

设想 :

  • 当用户使用他的鼠标中键向上/向下滚动时,所有子级都从小部件的中心缩放。
  • 如果用户按住 Alt 并同时按下鼠标中键,则所有子项都将使用鼠标产生的距离进行平移。

这个想法是通过继承另一个 QWidget 来创建一个新的 QWidget。所以我用 QGraphicsView 作为例子:

更新 :

此类适用于平移和缩放,但是当我像这样使用它时:

我无法点击按钮。我该如何解决?

0 投票
1 回答
509 浏览

python - wxPython 中 Mac OSX 10.8.5 上的 Paint 事件问题

在我的程序中,我将图像(位图)加载到 wxScrolledWindow 中。我试图在图像上绘制一个网格,但我无法让它工作。我的工作是将这个程序从最初开发的 Windows 移植过来,并使其在 Mac 上也能运行,但这比我预期的要痛苦得多。

此代码在 Windows 7 上运行良好,但在 Mac 上运行时我不断收到此错误:

self.staticBitmap 是一个 wxStaticBitmap,而 self.wxBitmap 是相同的精确图像。我的猜测是它可能与 GraphicsContext 有关吗?这里有一个类似的问题:How to send PaintEvent in wxpython但这对我没有帮助。我用 self.Refresh() 做了他们建议的事情,但我遇到了同样的错误。为什么这可以在 Windows 上运行,但不能在 Mac 上运行?图像上似乎没有绘图。

0 投票
1 回答
5974 浏览

java - Java repaint() 不调用paintComponent()

为了制作一个非常简单的弹幕游戏来学习 Java,我遇到了一个障碍:repaint() 没有调用paintComponent()。

这是整个程序,现在它只是将我每秒创建 50 次的图像绘制到 JPanel 上,该 JPanel 依赖于 JFrame。

在使用断点和 println 方法进行一些调试后,我可以确认正在读取正确的图像,gameTimerAction 中的计时器每秒被调用 50 次,并且 repaint() 根本没有调用 paintComponent()。

我对 Java 编程有点陌生,可能只是缺少一些简单的东西。

编辑:问题已通过将 gamePanel 更改为 GraphicsPanel 对象来解决。不幸的是,这也意味着我的更大的 pong 项目(这个项目的有缺陷的绘图逻辑基本上是从中复制的)只能奇迹般地工作,并且可能会因某些代码添加而不稳定。

0 投票
1 回答
1232 浏览

c++ - 剪辑小部件的paintEvent

我在 Qt 中剪辑时遇到问题。我有一个小部件,我在其中绘制了一大堆矩形。由于我只不时更改几个矩形,因此我只想绘制小部件的一小部分(仅这些矩形)并将绘制区域剪辑到这些部分。

isNew()如果矩形自上次绘制后接收到新颜色,则该函数为真。

我究竟做错了什么?当我使用该setClipRegion(...)功能时,我的程序运行得更慢。