How to add text to inkcanvas with code?

I would like to add some text (like a label) on an InkCanvas with WPF in C # code (not Xaml).

How is this possible? thanks Jonathan

+2


source to share


4 answers


You can do something like this. (See MSDN docs for SetTop, SetLeft)



// add control to children collection 
// (ctlToAdd can be TextBlock, RichTextBox, FlowDocument for example
inkCanvas.Children.Add(ctlToAdd);
InkCanvas.SetTop(ctlToAdd, 100.0);
InkCanvas.SetLeft(ctlToAdd,100.0);

      

+1


source


There is a common child property: http://msdn.microsoft.com/en-us/library/system.windows.controls.inkcanvas.children.aspx



Check examples for sample code

0


source


Try to implement your own Stroke class and use the Drawingcontext.DrawString method on it.

0


source


private void drawTextBox(object sender, MouseEventArgs e)  
{  
TextBox = new TextBox();  
myInkCanvas.Children.Add(myTextBox);  
myTextBox.Visibility = Visibility.Visible;  
Point mousePos = e.GetPosition(myInkCanvas);  
double left = Math.Min(mouseDownPos.X, mousePos.X);  
double top = Math.Min(mouseDownPos.Y, mousePos.Y);  
myTextBox.Width = Math.Abs(mouseDownPos.X - mousePos.X);  
myTextBox.Height = Math.Abs(mouseDownPos.Y - mousePos.Y);  
InkCanvas.SetLeft(myTextBox, left);  
InkCanvas.SetTop(myTextBox, top);  
}  

      

you can get mouseDownPos in:

private void myInkCanvas_PreviewMouseLeftButtonDown(objectsender,MouseButtonEventArgs){  
mouseDownPos = e.GetPosition(myInkCanvas);  
}

      

This is simple code that you can use in your program.

0


source







All Articles