在wpf中的形状上绘制文本

你们当中有些人可能会觉得这个问题很沉闷,但我仍然不习惯wpf绘画。 我想在Rectangle上添加格式化文本,它在canvas上移动,我有一个提示来覆盖UIElement.OnRender方法。 但是我不知道是否应该覆盖canvas类或Shape类。 在任何正确的情况下,参考示例中描述的方法的drawingContext参数: http : //msdn.microsoft.com/en-us/library/bb613560.aspx#FormattedText_Object ?

文本最终是分配给形状还是视觉临时效果,不能随着canvas上的形状一起移动?

是否有任何进一步有效的方法在形状上绘制文字?

您可以通过将两个控件放在允许控件重叠的父容器中来绘制矩形顶部的Text,例如GridCanvas

     

然后,您可以将任何格式应用于LabelRectangle ,并可以通过设置Grid的位置来移动组

Rachel的答案是正确的,虽然你可以扩展一点,有一些UserControl定义为:

并且在codebehind中定义1. Label:String DependencyProperty,Shape:UIElement DependencyProperty。

处理Shape的更改事件并调用:

 private void UpdateShape() { grdShapeContainer.Children.Clear(); if(this.Shape != null) { grdShapeContainer.Children.Add(this.Shape); } } 

通过这种方式,您将能够使事物变得动态。

此致,阿塔克

您可能还需要查看ZIndex属性,该属性可以在Grid( />等对象上设置为ZIndex其他项目)等对象上设置,这对于制作“loading”等内容非常有用屏幕。