【发布时间】:2009-09-30 15:04:24
【问题描述】:
我想在 C# 代码(不是 Xaml)中使用 WPF 在 InkCanvas 上添加一些文本(如标签)。
这怎么可能? 谢谢 乔纳森
【问题讨论】:
我想在 C# 代码(不是 Xaml)中使用 WPF 在 InkCanvas 上添加一些文本(如标签)。
这怎么可能? 谢谢 乔纳森
【问题讨论】:
你可以做这样的事情。 (有关 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);
【讨论】:
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);
}
你可以在:
private void myInkCanvas_PreviewMouseLeftButtonDown(objectsender,MouseButtonEventArgs){
mouseDownPos = e.GetPosition(myInkCanvas);
}
这是一个简单的代码,您可以在程序中使用它。
【讨论】:
有一个常规的 Children 属性: http://msdn.microsoft.com/en-us/library/system.windows.controls.inkcanvas.children.aspx
查看示例以获取代码示例
【讨论】:
尝试实现一个自定义的 Stroke 类并使用 Drawingcontext.DrawString 方法。
【讨论】: