- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我画了一些椭圆并将它们添加到网格中。
然后我想为每个 Ellipse 添加一些 FormattedText。我可以通过获取椭圆的 RectangleBounds 来做到这一点。
但是下面这个例子:
http://msdn.microsoft.com/en-us/library/bb613560.aspx#FormattedText_Object
我需要一个 DrawingContext 来绘制文本。但是,如果我不想覆盖 onRender,我怎样才能获得 DrawingContext?
最佳答案
您可以改用DrawingGroup
。它有一个返回 DrawingContext
的 Open
方法,您可以使用它来构建绘图。
然后您需要安排该绘图以某种方式出现在 UI 中。最简单的方法是将其包装在 DrawingBrush
中,并使用它来绘制 UI 中的一些现有元素。例如,如果您有一个名为 myEllipse
的椭圆,这会将其 Fill
属性设置为基于 的
:DrawingBrush
包含一位 FormattedText
的 DrawingGroup
var drawing = new DrawingGroup();
using (var context = drawing.Open())
{
var text = new FormattedText("This is some text",
CultureInfo.CurrentCulture,
FlowDirection.LeftToRight,
new Typeface("Calibri"),
30,
Brushes.Green);
context.DrawText(text, new Point(0, 0));
}
var db = new DrawingBrush(drawing);
db.Stretch = Stretch.None;
myEllipse.Fill = db;
如果您已经用其他东西填充了 Ellipse
,您有两个选择。您可以向此绘图添加更多内容 - 您可以根据需要对上下文进行任意多次调用。例如,如果我在调用 context.DrawText
之前添加它:
context.DrawRectangle(Brushes.Cyan, null, new Rect(0, 0, 300, 100));
我会在文本后面设置一个青色背景。 (当然,您需要调整这些示例中的坐标以适合您的布局。)
但是添加一个额外的元素来托管绘图可能比尝试将其搭载到一个可以做其他事情的元素中更简单。因此,您可以将 Rectangle
元素直接放置在 Ellipse
上,并使用 DrawingBrush
,例如 Fill
> 对于那个 Rectangle
。 Rectangle
实际上看起来不是矩形,因为此 DrawingBrush
并未在其整个区域中绘制。因此,效果看起来与将 TextBlock
分层放置在 Ellipse
上时的效果非常相似。
关于c# - 如何绘制格式化文本(如果不在 onRender 方法中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4330722/
我有以下代码来截取“目标”部门的屏幕截图。我在一个网站上找到了这个。但我不知道“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
我是一名优秀的程序员,十分优秀!