Some of you maybe find this question dull but I am still not deeply accustomed to wpf drawing. I want to add formatted text on a Rectangle which moves around on a canvas and I have got a hint to override the UIElement.OnRender method. However I do not know if I should override the canvas class or the Shape class. In any correct case, to what refers the drawingContext parameter of the method as described in the example: http://msdn.microsoft.com/en-us/library/bb613560.aspx#FormattedText_Object ?
Is the text ultimately assigned to the shape or is it a visual temporary effect that cannot move along with the shape on the canvas?
Is there any further effective means of drawing text on a shape?
You can draw Text on top of a Rectangle by placing both controls in a parent container that allows controls to overlap, such as a
Grid
or aCanvas
You can then apply whatever formatting you want to the
Label
, theRectangle
, and you can move the group around by setting the positioning of theGrid
Rachel's answer is correct, although you can extend it a bit, have some UserControl defined as:
And in the codebehind define 1. Label:String DependencyProperty, Shape:UIElement DependencyProperty.
Handle the Shape's change event and call:
This way you will be able to make things dynamic.
Regards, Artak
You might also want to look into
ZIndex
property which can be set on objects like Grid (<Rectangle Background="Black" Grid.ZIndex = 99
/> for instance would put it overtop other items) which useful for making things like "loading" screens.