问题标签 [onpaint]
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.
c# - 如何阻止Paint事件堆积
我正在创建一个应用程序来安排不同的任务。这些通过在面板上绘制矩形来显示。这必须是响应式的。所以我需要在每次尺寸变化时绘制并使其无效。当我达到规划面板的最大高度时,它会自动滚动。
问题是当我抓住滚动条并开始滚动一点时,当我释放滚动条时,我的整个应用程序和计算机都会冻结。
这很可能是由于每次滚动和堆叠都会调用 onpaint 事件,导致应用程序挂起,直到它们全部完成。
现在我的问题是:我将如何解决这个问题?可能是通过防止绘制事件被多次调用,但是如何?
绘制事件调用的方法:
c#-4.0 - 只更新用户控件的一部分
我正在开发用于视频使用的时间线用户控件。这是我的工作照片:
在这里我有问题。当 currentTime 改变时,我必须更新 UI。但是当我使用 this.Invalidate(); 它刷新了整个控件。但我只想更新指针(灰色背景中的白线)。因为它会导致控件在非常小的时间变化上一遍又一遍地闪烁。如何只更新指针?这是我的 onPaint 方法
c# - 使用 OnPaint() 方法
我正在使用这个库将二维码生成到 WinForm 应用程序中,但我真的不知道如何使用 OnPaint() 方法。
所以我有这个:
我在表单中有一个简单的图片框,我只想在其中生成二维码图像(如果可以在图片框中生成它)。
c# - 未同时绘制控件
我有一个我正在使用的表单,ShowDialog
其中包含几个文本框、标签和一个按钮。我遇到的问题是文本框是在表单本身和其他控件被绘制之前绘制的。
我正在覆盖OnPaint
我不确定这是否会导致问题的方法:
这只是一个轻微的延迟,但它是可见的和烦人的。谢谢你。
顺便说一下,表单是双缓冲的。
编辑:我已经指出问题在于表单没有FormBorderStyle
. 如果FormBorderStyle
设置为Sizable
,则不会出现此问题。但是请注意,FormBorderStyle.None
我的边框样式是必要的,所以我还没有找到解决方案。
python - WxPython,在简单的 GUI 中使用缓冲 DC 和面板刷新(转速计数器和条形图)
我刚刚开始用 Python 编程,因此尝试了一个简单的 GUI,它由一个仪表(转速计数器)和一个条形图组成。这一切都有效(代码附在下面)。但是,由于屏幕刷新(Windows XP),我的闪烁非常严重。我知道我需要使用缓冲 DC,但是我无法从所有帖子中找出我实际需要做的事情。
但是我的假设是:
- 最初为缓冲图像创建一个内存 DC 以“驻留在”其中,然后
- 实例化缓冲 DC
- 将 On Paint 绑定到缓冲 DC。
为了提供相关的仪表面(比例),我在 Autocad 中将其全部绘制出来,然后将其转换为 jpg (HMIV0.2.bmp),条形图和仪表指针叠加在上面。
正如您会注意到的,我在循环结束时使用了 Refresh,我想知道这是否是“不好的做法”。然而,我的目的是让程序自由运行并在每次循环时“获取”相关值(转速)。因此没有外部事件来触发绘制。
任何正确方向的建议或指针都非常感谢......我购买了 Cody Precord 的“Wx.Python 2.8 Application Development Cookbook”,希望能得到一些启发,但唉。
c# - 如何仅在 .net Forms 2.0 CF 中绘制可视内容
我目前有一个带有可滚动面板的表单,它可能包含 100 多个子控件(任何时候只有大约 10 个可以在屏幕上查看)
这会在滚动时导致大量闪烁。
我一直在研究一些双缓冲技术,但它们在我的情况下不起作用,因为我使用了几个子控件(按钮、标签、复选框)并且它们都是独立绘制的。我不能在面板的 OnPaint 方法中做任何影响孩子的事情。
我读过的几个答案指出,添加现有控件需要更多资源,而不是说,而不是标签,只是在顶部绘制一个带有文本的彩色方块。
我有两个主要问题:
- 如果我不再使用子控件,而只是在面板的 OnPaint 中绘制所有内容,我如何才能仅绘制当前可见的内容(考虑到用户可以滚动)
- 我将如何实现复选框之类的功能?
c# - 绘制图像时状态条上的红十字会
我正在尝试非常快速地多次更改状态条上的标签图像。我收到 ArgumentOutOfRangeException。我已经在标签和状态条以及 OnPaint 覆盖的绘制事件中添加了捕获,但我未能捕获它。例外总是伴随着一个红十字代替状态条。
这是更改图像的代码。每次从串行连接接收数据时都会调用它。目标是在接收到数据时闪烁灯。图像为 16 像素 x 16 像素。
c# - 从 System.Windows.Forms.ProgressBar 派生的类没有得到它的覆盖 OnPaint
我创建了一个派生自 System.Windows.Forms.ProgressBar 的类。我遵循了 MSDN 建议的方法:
- 将用户控件添加到您的项目
- 打开用户控件的代码
- 不是从 System.Windows.Forms.UserControl 派生,而是从 ProgressBar 派生。
此外,我重写了 OnPaint,因此我可以自己绘制它:
然而这个函数永远不会被调用。断点不会在这里中断。进度条正常绘制。我错过了什么?
c# - 在 Windows 窗体中创建带有圆角的自定义 ComboBox
我想创建一个带有圆角和渐变颜色的自定义组合框。我Button
通过覆盖该OnPaint
方法实现了相同的功能。但它不适用于ComboBox
. 任何帮助将不胜感激。
我用于覆盖的代码OnPaint
如下:
c# - 暂停布局恢复布局
我有一个带有流布局面板的用户控件。这个控件可以有一个或多个相同的控件。此层次结构可以增长到许多级别。
最初我正在添加根控件。然后将控件添加到根控件(流布局面板)。
实际添加控件的代码(ContainerControl 类)。
问题是,我有多个级别的控件。但似乎根容器内的直接容器没有正确调整大小。因此节点被部分显示。如果我启用用户控件的 AutoResize 属性,则用户控件正在调整大小但闪烁不良。
有什么方法可以强制 contrpls 立即调整大小。我尝试在表单和用户控件中暂停布局
修复: 我实际上并没有解决这个问题。我启用了自动调整大小属性为真。这会在表单加载期间导致严重的闪烁。
为了减少闪烁,我在表单中添加了以下代码。
一旦加载了所有控件,这将显示表单。所以在表单加载之前会有一个初始延迟。