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

c# - 使用 Scrollbar 值作为 PaintEventArgs 循环的参数

我正在尝试创建一个使用水平滚动条作为时间控件的 windows.form。然后将时间值用作 85 个数组的数组索引,每个数组值(不为零)包含一个方位,然后在地图上显示为一条线。我遇到的问题是我对 C# 和事件处理很陌生,所以我找不到将 hScrollBar1_Scroll 的事件(和值)链接到 PaintEventArgs 循环的方法。以下是我尝试过的代码示例:

DrawLinesPoint() 处于循环中的原因是因为有 85 个站点可以同时显示方位。

起初我尝试使用“PaintEventArgs f”作为“ScrolleventArgs e”旁边的参数,但不知道如何处理该事件,因此 DrawlinesPoint() 使用“null”而不是“f”。

数组 rdata[] 是 2 维的,包含站点的参考数据,而 ldata[] 是 3 维的,包含导入的轴承数据。

每次通过滚动条更改时间时,必须清除地图并更改显示的方位。

任何人都可以帮助使用此代码吗?我很有可能完全以错误的方式做这件事,所以任何帮助都将不胜感激。

0 投票
0 回答
34 浏览

c# - 更新新位置时图像闪烁

我有 2 个图片对象。我希望他们两个都从右向左移动。如果一个人走出可见面板,我将其位置替换为起点。所以屏幕上总是有 2 张图片在移动。

如果我不使用计时器,则绘制 2 张图片。但是,如果我使用带有滴答事件的计时器来更新它们的位置以使它们移动,则只显示一张图片并且它一直在闪烁,滞后......

以下是我到目前为止的代码。我对 C# 不熟悉。感谢任何帮助。谢谢你。

定时器间隔 = 30;表格一:

背景:

0 投票
1 回答
286 浏览

c# - When are C# Draw/Fill functions called? How can they be invoked from a separate class?

I'm not sure of how the Paint form lifecycle works, when is the Form1_Paint function called? How can I control when it's called?

I know I can call Draw a Circle using the C# Drawing library like so:

If I define an object like so:

or if I can't do that how can I call the Form1_Paint function as opposed to it just running immediately at run time.

0 投票
1 回答
1114 浏览

qt - QWidget/QPainter show() + paintEvent() -> 在旧位置显示矩形

我必须在透明 Qt 窗口的不同位置显示矩形。在显示窗口之前,我设置了新的矩形位置。有时旧位置会显示几毫秒。(例如 m_y_pos=100 而不是 m_y_pos=400)。似乎在显示窗口和更新窗口之间存在一种竞争条件。

我希望有人知道一个建议。

谢谢纸浆

示例代码:

0 投票
1 回答
1061 浏览

c# - c#如何连续调用onpaint没有延迟

我正在制作自定义用户控件,但是当我覆盖时OnPaint(),它不会连续调用。
这是我的代码:

我等了 10 秒,消息“???” 应该不断出现在我的控制台中,错误我只看到 12 条消息出现。我试过Invalidate(true);虽然消息不断出现,但表格很滞后。

e.Graphics.DrawString不是很贵的方法吧?

我怎样才能OnPaint() 无延迟地连续通话?

0 投票
1 回答
660 浏览

c# - 如何根据两个单元格中的值在 DataGridView 中绘制选定的行?

我正在使用分号分隔的文本文件填充 DataGridView,如下所示:

我现在要做的是将在当前日期的两个月内具有 EndDate 值的行着色为黄色,在一个月内为橙色,而那些具有过去日期(意味着它们已经失效)的行着色为红色。

有一个 PostPaint 事件可能有效,但我不知道如何检查该事件处理程序中行内的单元格内容:

这是读取的文件的内容(伪造/测试数据,前面带有标题行):

如果 adEndMonth + adEndYear 日期等于 2 个月或更短时间,则整行应为黄色;如果 1 个月或更短时间,橙色;如果今天或过去,把它涂成红色。最后,如果其中一个滚石乐队正在运行该应用程序,请将其涂成黑色。

这是 PostPaint 事件的一些伪代码,其中包含“TODO:”,我不知道该怎么做:

0 投票
2 回答
547 浏览

c++ - 如何避免在 QFrame 上重绘?

我有一个QFrame用于绘制一些矩形来表示一天中的某些时间段,例如,用户睡觉的时间段。

为此,我覆盖了该paintEvent(QPaintEvent *)函数,并使用 aQPainter来绘制矩形。

它工作正常,问题是QtpaintEvent(QPaintEvent *)自动多次调用该函数来重新绘制它,并且它消耗了太多CPU。实际上,我只需要重绘几次(通过手动调用重绘函数)。QFrame

有什么方法可以避免QFrame自动重绘自己?

提前致谢

我正在使用 Qt 5.3

0 投票
0 回答
439 浏览

qt - 在qt中单击“按钮”后如何画一条线

点击后,设置要绘制的点,标签按预期显示;

p1 和 p2 在头文件中使用 QPoint *p1 声明;QPoint *p2;void virtual paintEvent(QPaintEvent *);

点击按钮后,标签显示,我认为这意味着插槽运行良好,但我根本没有线。我是Qt的新手,真诚地感谢大家

0 投票
0 回答
192 浏览

c++ - Qt5:如何解决这个麻烦。自定义 QWidget 与自定义 paintEvent() 与 QWidget move() 函数

第一次在这里发帖,我也需要它来帮助别人。

我只是 QT/c++ 的新手,但是由于多年的编程爱好,我的进步相对较快。

我正在尝试通过制作游戏来学习它,等等,除了其他东西之外,我还制作了一个从 QWidget 继承的自定义精灵类。作为一种常见的做法,我重新实现了paintEvent函数,使用了一些技巧,qpixmap/qpainter,json文件,spritesheets,我自己制作的codehelpers,以成功播放具有idle/walking/attacking等姿势的动画。

一切都很完美,直到我尝试通过 QWidget 中的函数 move(int x, int y) 移动它。

我认为,问题在于每次我调用“move”函数时,它都会通过再次调用paintEvent函数来更新/刷新/重新绘制QWidget,切断我的动画,产生几个问题等等。

如果不重新绘制或等待动画完成,或者我缺少什么,我无法弄清楚如何移动它。似乎没有其他方法可以移动 QWidget。我相信问题出在另一个被发射信号调用的事件函数中,可能是 moveEvent,但我重新实现了它,保持它为空,结果是一样的。

你有什么主意吗?我应该以另一种方式重新制作它以跳过这个麻烦吗?还是简单到我看不到对面的硬币?

如果需要,请索取代码。非常感谢你,露娜。


编辑1:

然后在我的通用 QMainWindow 中添加我的customsprite 类的实例,将其父级设置为 QMainWindow,它出现,播放动画。问题是当我尝试使用时:

它移动,但多次插入动画。我也尝试过在paintEvent中使用“isWalking”布尔过滤器,但它是一样的。

编辑 2:那里的“xMove”是一个用来成功平滑地移动动画的技巧,但它需要增加 QWidget 的宽度才能被看到。不是一个好的解决方案。

0 投票
1 回答
4764 浏览

python - 在 QWidget 上的 QPixmap 上绘制点(pyqt5)

我有一个带有 QLayout 的 QWidget,上面有一个 QLabel。我在标签上设置了一个 QPixmap。无论用户单击图像的何处,我都想画一个点。我定义了 mouseReleaseEvent(有效)和paintEvent(但没有绘制点)。我已经阅读了所有类似的问题,但没有一个解决方案对我有用。有什么帮助吗?我的相关代码: