如何使用代码将文本添加到inkcanvas?

时间:2009-09-30 15:04:25

标签: wpf inkcanvas

我想在一个InkCanvas上添加一些文本(比如标签),在C#代码中使用WPF(而不是Xaml)。

怎么可能? 谢谢 乔纳森

4 个答案:

答案 0 :(得分:1)

你可以这样做。 (参见SetTop,SetLeft的MSDN文档)

// 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 :(得分:0)

有一个常规的儿童财产: http://msdn.microsoft.com/en-us/library/system.windows.controls.inkcanvas.children.aspx

检查示例以获取代码示例

答案 2 :(得分:0)

尝试实现自定义Stroke类并使用Drawingcontext.DrawString方法。

答案 3 :(得分:0)

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);  
}  

你可以获得mouseDownPos:

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

这是一个简单的代码,您可以在程序中使用它。