问题标签 [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.

0 投票
1 回答
13794 浏览

c# - 在面板上绘制文本

好的,我解决了所有问题,现在正是我想要的。我有一个textBox1,,panel1drawTexta(一个按钮)。

当我单击按钮并在面板中选择一个点时,我想从textBox1.

0 投票
1 回答
2036 浏览

c# - Scroll 事件和 Paint 事件之间的延迟,可能介于两者之间

我在表单上有一个简单的面板,我正在使用 AutoScrollMinSize 和 AutoScroll 在我的面板上获取一些滚动条,一切正常。

我还有一个 Scroll 事件,我用它来使整个面板区域无效,因为事实上它似乎只使左/右、上/下滚动时需要的位无效。除此之外,我正在使用与面板大小相同的 BufferedGraphics,然后执行 .Render(e.Graphics) 因为我希望它在整个面板上绘制,就好像滚动条不存在一样.

现在,我遇到的问题是滚动和绘制内容时似乎存在视觉延迟,我认为这是因为在滚动事件之前我不熟悉的地方有一个额外的绘制/设置阶段是调用或在调用 Paint 事件之间。

如果我在绘画方法中有一个无效面板,您看不到问题,但这更多与绘画事件被多次调用隐藏问题有关。

所以我想我理解的方式是,当你滚动时,引擎盖下的东西会做一个大矩形 blit 移动已经存在的内容,然后用需要填充的区域的矩形调用无效。

如果是这种情况,是否存在这种情况,例如抑制这个阶段或我缺少的其他设置来摆脱跟上滞后?

PS:我还覆盖了 OnPaintBackground 方法,它是一个空存根。

0 投票
1 回答
2739 浏览

.net - 在 .Net 应用程序中使用 OnPaint 的正确方法是什么?

有时我需要控件的自定义外观。或者做很多定制绘画。我知道我可以这样做OnPaint(参见:http: //msdn.microsoft.com/en-us/library/system.windows.forms.control.onpaint.aspx

使用 .net 应用程序自定义绘制内容的正确方法是什么OnPaint?是否有任何规则我必须牢记以保持我的应用程序优化,并将渲染时间保持在最低限度?

注意:我不时看到并经历过很多 OnPaint 的低效使用,因此我创建了这个 Q&A。

0 投票
2 回答
2044 浏览

c# - OnPaint does not update

I have a windows form which contains a user control. This user control has the following code:

and some more code, which is probably not important now. So when I start the programm it draws the red rectangle. All the variables (laenge, leerzeichen, hoehe) are set to 0 at the beginning of the program. Now, when I press a button the variables are changing, but OnPaint does not draw the new rectangle? What could be the problem? Do I have to call OnPaint in some way?

0 投票
2 回答
121 浏览

c# - OnPaint 重绘一切,有什么可以留下来吗?

例如,假设我的 OnPaint 绘制了一条与称为长度的变量一样长的线。还有一个叫做颜色的布尔值。如果 bool 为真,则线为红色,如果为假,则线为黑色。屏幕上可能有两条不同颜色和不同的长线(我的问题是:OnPaint 重绘整个表面,但是否可以保留一些图纸)?

我知道这个问题可能有点令人困惑。

0 投票
3 回答
416 浏览

c# - UserControl 的 OnRepaint 事件后,控件从父 UserControl 中消失

我有一个上面UserControl有一个button。在UserControl OnPaint事件中,我绘制一个圆角边框(如果半径为零,则为一个简单的矩形),然后填充整个控件。在这些操作之后,我的Button( btnClose) 消失了。如何让我的button再次可见?

以防万一,DrawRoundRect 函数:

0 投票
0 回答
279 浏览

c# - 通过 ShowDialog() 显示半透明自定义表单时闪烁

我需要MessageForm在主窗体 ( ) 上显示一个对话框窗体 ( ParentForm)。MessageForm包含一个面板 ( ),我在其mainPanel上添加了一些运行时控件(关闭按钮和许多标签和链接标签)。MessageForm 有一个特定的行为:它必须是半透明的,并且在显示时,ParentForm 必须是非活动的:

显示 MessageForm 的函数:

LinkLabel“项目”是已经包含标签和控件的所有文本的特定结构的列表。好吧,现在的问题是:当我从 调用Show函数时ParentForm,我MessageForm的在闪烁,这足以让眼睛感到不安。我怎样才能消除这种闪烁?

0 投票
1 回答
539 浏览

.net - 具有后台工作程序的多个表单实例

我有两种形式:“主要”和“面板”。
主窗体包含 2 个按钮:“bt_panel1”和“bt_panel2”。
每个按钮的功能是:

(关于 bt_panel2,“2”而不是“1”)

面板形式包含:

  • 函数加载:
  • 一个后台工作者控件(它做一些不相关的事情)及其“RunWorkerCompleted”:
  • 功能涂料:

如果我只打开一个面板(在 Main 中按 bt_panel1 或 bt_panel2),一切正常。
但是,如果我打开两个面板(在 Main 中按 bt_panel1 和 bt_panel2),应用程序没有响应,并且 panel2 完全空白(未绘制)。
应用程序没有响应(我无法关闭面板,也无法关闭 Main...我必须终止调试才能关闭)。
不调用异常。
未使用 ReportProgress 函数。
DoWork 函数从 SharedMemory 区域读取一些数据(panel1 和 2 的数据不同)

我认为问题在于 RunWorkerCompleted 中的“Me.Controls”没有引用到表单的相应实例。

0 投票
1 回答
2373 浏览

c# - 使多个矩形或区域无效

我遇到了问题,Invalidate()因为它OnPaint在我准备好之前调用...... Invalidate(new Rectangle(x, y, width, height))当我需要重新绘制一个且只有一个区域时工作正常,但我需要做的是创建一组矩形以使其无效,然后使用Update()方法重新绘制所有无效区域。我在Invalidate()and之间有点迷失Update():如何使用它们以及这样做的干净方法是什么。

我需要实现这一点,因为我正在研究诸如“兰顿的蚂蚁”或“康威的生命游戏”之类的元胞自动机。小网格不是问题,但是对于大尺寸的网格(700x500),绘画是一个非常重要的问题。

所以我的问题是如何使 X 矩形无效而不OnPaint在每次失效时调用,然后调用OnPaint以仅刷新指定区域(X 矩形将 = 至少数百,数千肯定)?

0 投票
1 回答
796 浏览

c# - 在绘制事件运行缓慢时将图块集图形绘制到屏幕上

正如您可能从下面的代码中看出的那样,我对 C# 很陌生。对于我的第一个项目(作为一种测试),我制作了一个 2D 关卡编辑器,它有 5 层。在下面的代码中,我通过一个候选字典进行搜索,该字典在每次更改地图时生成,并且只包含填充的图块,而不是使用 for(x for(y for z(draw graphics)))必须检查网格的每个部分是否有任何东西。

它运行良好,直到我在屏幕上有大约 30 个图块,然后它开始运行得很慢,就像非常生涩一样。此绘制事件仅在需要时调用,它不会在计时器上运行,它仅在放置新图块或鼠标光标悬停在新块上时运行。所以我猜问题出在图像实际上被绘制到屏幕上的部分,就像一些东西正在积累一样。

在 DrawImage() 函数下方注释掉的行是为了测试是否只绘制矩形而不是图块集的一部分更快。它是!我很抱歉我听起来很笨,但请记住,这是我的第一个项目,我不确定在哪里可以找到关于这个特定主题的答案。

谢谢!,下面是我的绘画代码