- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 .NET 3.5 中使用 Adorner,我可以通过覆盖 OnRender 进行绘制,但我需要能够重绘装饰器以更改其外观。
本质上,我正在寻找一种方法来清除绘图上下文并再次调用 OnRender。执行此操作的最佳方法是什么,或者是否有更好的方法?
public class MyAdorner : Adorner
{
private Brush brush = Brushes.Red;
public DragArrowAdorner(UIElement adornedElement) : base(adornedElement)
{}
public void RedrawWithBrush(Brush newBrush)
{
brush = newBrush;
// redraw..?
}
protected override void OnRender(System.Windows.Media.DrawingContext drawingContext)
{
// some drawing code...
drawingContext.DrawRectangle(
brush,
null,
new Rect(AdornedElement.DesiredSize));
}
}
最佳答案
您问题的答案是使用 InvalidateVisual
使 OnRender 再次被调用
但是,我建议不要自己在 OnRender 上进行自定义绘制,而是使用标准样式和可视化树模板来构建装饰器的实际视觉效果。这也意味着您可以使用 Storyboard在其中运行标准 XAML 动画。
如果你想采用这种方法,在你的装饰类中你需要:
base.AddVisualChild()
或使用要在装饰器中显示的视觉对象创建您自己的视觉对象集合ArrangeOverride(Size size)
以正确安排 child ;VisualChildrenCount
以返回装饰器可视化树中子项的数量;GetCisualChild(int index)
以返回特定的 child 。你可以看看ResizingAdorner MSDN 示例以获取更多信息。
关于c# - 装饰器内的动画(调用 OnRender),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/583808/
我有以下代码来截取“目标”部门的屏幕截图。我在一个网站上找到了这个。但我不知道“onrendered:function() ”是如何工作的。我想问一下“onrendered”是如何使用的?如果我不添加
经过几个小时的实验和阅读,我仍然不明白为什么myTemplate.onRendered(function() {...})只调用一次。 根据您阅读的位置,您会获得不同的信息,但显然每次内部 HTML
我有一个自定义控件,用于执行动态数据呈现。此控件包含一组 DataPoint 对象,每个 DataPoint 都根据其位置 在控件中呈现(这些点在 OnRender 方法)。 自定义控件包含许多影响呈
截至最近, meteor 的所有文档都指出 onRendered是一种在模板完成渲染时获取回调的新方法。和 rendered只是为了向后兼容。 但是,这似乎对我不起作用。 onRendered永远不会
我有一个自定义面板,它实现了其子项的良好自定义布局。我想向面板添加一些额外的图形,因此覆盖 OnRender 以添加额外的矩形等。它工作得很好,除了 OnRender 似乎只添加到背景。有没有办法让
我想使用 OnRender 方法在文本框中绘制下划线,但该线绘制在文本框后面。文本框是不透明的,因此看不到下划线。如何在文本框上方绘制内容? protected override void OnRen
这是我的代码, var pdf = function() { console.log(12); var form = $('.container');
我有一个自定义控件 MyControl,它继承自 Canvas,并且在 OnRender-Method 中有自己的逻辑。它应该将一些矩形和文本绘制到绘图上下文中。 public class MyCon
我想在 twitter-bootstrap 的日期时间选择器中禁用过去的日期。例如,用户不能选择当前日期之前的日期。我编写代码 $(function() { var now = new Da
我有一个 iron-router 路由: Router.route('/profiel/bewerken', { subscriptions: function () {
我正在使用 ionic 框架包,并且我有一个侧边栏类。有一个名为 ionSideMenu.snapper 的类,查看源代码,该类是在呈现 ionSideMenuContainer 模板时定义的,因此我
在 Meteor 模板中使用 JQuery 插件时遇到问题。我试过this插件。 // A bunch of items var options = {
我将 PhaserJS 与 MeteorJS 结合起来,我担心 onRendered 回调中会包含大量代码。 为了简单和组织,我想将许多函数拆分到几个不同的文件中。 但是,我需要避免失去范围。如何将一
我想动态地绘制一些东西。以下代码显示了我的 OnRender。我在程序中需要它的地方设置 DrawItem。但是,当我调用 DrawItem =5; 时,我必须调用什么,以便调用 OnRender?
我在 .NET 3.5 中使用 Adorner,我可以通过覆盖 OnRender 进行绘制,但我需要能够重绘装饰器以更改其外观。 本质上,我正在寻找一种方法来清除绘图上下文并再次调用 OnRender
我有一个用于更新特定项目数据的 Iron-router 路由: Router.route('/project/:key/update', { ... }); 每次用户导航到“编辑项目页面”时,我都
父模板onRendered函数在子模板之前调用。如何在子模板渲染后执行父模板函数。 {{#each object}} {{> child}} {{/each}} 现在我需要执行一些
我正在尝试在我的meteor应用程序中使用chartist.js。我将其代码放在 Template.reportPage.onRendered() 中,以便在插入模板 DOM 后生成条形图。我尝试添加
我画了一些椭圆并将它们添加到网格中。 然后我想为每个 Ellipse 添加一些 FormattedText。我可以通过获取椭圆的 RectangleBounds 来做到这一点。 但是下面这个例子: h
我有一个自定义的 TextBox,它覆盖了 OnRender 方法。不幸的是,当我向网格添加超过 143-145 个文本框时,OnRender 无法正常工作。 这是带有 160 个文本框的窗口在 wp
我是一名优秀的程序员,十分优秀!