I would like to add some text (like a label) on a InkCanvas with WPF in C# code (not Xaml).
How is it possible ? thanks Jonathan
I would like to add some text (like a label) on a InkCanvas with WPF in C# code (not Xaml).
How is it possible ? thanks Jonathan
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);
Try to implement a custom Stroke class and use Drawingcontext.DrawString method for the same.
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 a simple code that you can use it in your program.
There is a regular Children property: http://msdn.microsoft.com/en-us/library/system.windows.controls.inkcanvas.children.aspx
Check the examples for a code example