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

发布于 2024-08-06 17:45:34 字数 80 浏览 7 评论 0原文

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

怎么可能? 谢谢 乔纳森

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

走过海棠暮 2024-08-13 17:45:34

你可以做这样的事情。 (有关 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);

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);
扛刀软妹 2024-08-13 17:45:34

尝试实现自定义 Stroke 类并使用 Drawingcontext.DrawString 方法进行相同的操作。

Try to implement a custom Stroke class and use Drawingcontext.DrawString method for the same.

随遇而安 2024-08-13 17:45:34
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);  
}

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

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.

阳光①夏 2024-08-13 17:45:34

有一个常规的 Children 属性:
http://msdn.microsoft.com/ en-us/library/system.windows.controls.inkcanvas.children.aspx

查看示例以获取代码示例

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文