问题标签 [onrender]

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 回答
1595 浏览

wpf - WPF OnRender Z-Order 控件?

我有一个自定义面板,它实现了它的孩子的一个很好的自定义布局。我想在面板中添加一些额外的图形,因此覆盖 OnRender 以添加额外的矩形等。它工作得很好,除了 OnRender 似乎只添加到背景中。有没有办法让你的 OnRender 绘图在孩子们的上面?

一个示例面板...

...以这种方式使用...

0 投票
4 回答
26091 浏览

wpf - 如何手动告诉所有者绘制的 WPF 控件刷新/重绘而不执行测量或安排通道?

我们正在控件子类的OnRender. 此绘图代码基于外部触发器和数据。因此,每当触发器触发时,我们都需要根据该数据重新渲染控件。我们正在尝试做的是找出如何强制控件重新渲染但不经过整个布局传递。

如上所述,我看到的大多数答案都围绕着使Visual布局无效,这会强制执行新的措施并安排非常昂贵的通道,尤其是对于像我们这样非常复杂的视觉树。但同样,布局没有改变,VisualTree 也没有改变。唯一能做的就是以不同方式呈现的外部数据。因此,这严格来说是一个纯粹的渲染问题。

同样,我们只是在寻找一种简单的方法来告诉控件它需要重新执行OnRender。我见过一个“hack”,您可以在其中创建一个新的DependencyProperty并将其注册为“AffectsRender”,当您想刷新控件时,您只需将其设置为某个值,但我对默认实现内部发生的事情更感兴趣这些属性:它们调用来影响该行为的东西。


更新:

好吧,看起来没有任何这样的调用,因为即使AffectsRender标志仍然在内部导致 Arrange 传递(根据下面 CodeNaked 的回答),但我发布了第二个答案,显示了内置行为以及工作 -以禁止您的布局密码以简单的可为空大小作为标志运行。见下文。

0 投票
4 回答
14780 浏览

c# - 如何在 OnRender 中重绘或刷新?

我想动态地绘制一些东西。以下代码显示了我的 OnRender。我在我的程序中需要它的某个地方设置了 DrawItem。但是当我打电话时DrawItem =5;,我必须调用什么,以便调用 OnRender?

0 投票
0 回答
209 浏览

wpf - 如何在多个位置渲染路径?

我们定义了一个路径,我们希望在 OnRender 覆盖期间在数百个不同的位置进行渲染。我们知道 DC 上的 PushTransform 方法,但这似乎需要为每个渲染一个新的 TranslateTransform 实例,这意味着我们最终也会有数百个 TranslateTransform。这似乎效率不高。

我们还尝试了单个 TranslateTransform,然后只是在每次渲染时更改它的 X 和 Y 位置,但是由于 WPF 实际上缓存了绘图指令而不是实际的绘图,所以当最终要渲染时,它们都渲染在同一个位置,因为它们使用其最后设置的偏移量共享相同的 TranslateTransform。

那么实现这一目标的最佳方法是什么?

0 投票
2 回答
348 浏览

wpf - 为什么这个非常基本的 StreamGeometry(正方形)不在 Window 的 OnRender 中渲染?

好吧,我难住了。为什么这不渲染正方形?(注意,我故意使用正负坐标,因此无论原点如何,它都会显示。不知道 x/y 是否反转等)

更新

我注意到还有一些奇怪的事情。如果我将此代码移动到具有红色背景的 Panel 的子类中,它会呈现红色背景,然后呈现一个前面带有灰色边框的蓝色方块。(注意:它没有被剪裁到控件的边界,这就是我可以看到所有那个正方形的方式。)

但是,如果我只是将子类更改为 UserControl,则带有灰色边框的蓝色方块将呈现在红色控件的后面。(同样,我可以看到这一点,因为我禁用了剪辑。)

如果最终将其更改为 Control 的子类,我将不再获得红色背景,而只会获得带有灰色边框的蓝色方块。我认为这是因为 Control 自己不进行任何渲染,但仍然没有解释为什么背景颜色在 UserControl 而不是 Panel 中渲染在我的绘图上。我的猜测是模板中的某些元素出现在渲染的前面,但我想不出那会是什么。

0 投票
0 回答
484 浏览

wpf - WPF UI 交互滞后,但为什么?

为了演示我遇到的问题,我编写了下面的简单示例,该示例绘制了一条曲线和一条跟随光标的黑线。

有人可以解释为什么当我增加“numPointsMul”时,与鼠标的交互和光标线的绘制变得非常滞后?

为什么图形中的点数会这样影响指针的绘制呢?请注意,我已关闭所有命中测试,并且该图仅在OnRender.

我收集到增加点数会导致OnRender函数花费更长的时间,但我不明白为什么它会导致指针的绘制滞后,因为OnRender当光标移动时不会被调用,而是会调用 Invalidation 事件。看起来命中测试仍在进行中?

0 投票
3 回答
4044 浏览

wpf - 在 InvalidateVisual() 之后未调用 OnRender

自定义 WPF 控件覆盖 OnRender。该方法从自定义数据生成并显示路径。数据提供者使用依赖属性绑定。当数据更改时,依赖属性注册一个事件。该事件依次调用 InvalidateVisual()。

但是,在 InvalidateVisual() 之后,并不总是调用 OnRender。

我们使用 Prism 框架和区域功能。所讨论的控件嵌入在这样一个区域中,该区域被激活和停用。但是,只要区域处于活动状态,控件的属性“IsVisible”就为真。但是,当调用 InvalidateVisual() 时,不会调用 OnRender 方法......

什么会阻止调用 OnRender 方法?

0 投票
2 回答
5012 浏览

extjs - ExtJS 如何覆盖 onRender 以便获得正确的组件?

我正在尝试获取呈现为组件的 div 的大小。

而这个 onRender 函数会中断正常的渲染过程。整个布局被破坏并且 div (#selector-organization-body) 非常小。所以我想知道我是否以错误的方式覆盖了 onRender 。

0 投票
2 回答
534 浏览

c# - 在 jquery 中显示无效日期?

我正在尝试运行此代码,但var nowTemp = new Date();显示的日期无效,我不知道为什么?有什么建议么?

0 投票
0 回答
1238 浏览

c# - WPF 标尺自定义控件,可跟踪鼠标并移动网格线

我正在开发绘图应用程序。我制作了自定义标尺控件,但我坚持使用网格线支持。我的尺子看起来像这样:http: //i.stack.imgur.com/dRUE3.jpg

RulerControl OnRender 方法:

当用户在窗口中移动鼠标时,标尺应显示网格线。我使用 Mouse.GetPosition(this) 方法获取鼠标位置。但我不能在标尺中绘制动态网格线。我如何实现这个问题?