【问题标题】:How to add text to a inkcanvas with code?如何使用代码将文本添加到inkcanvas?
【发布时间】:2009-09-30 15:04:24
【问题描述】:

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

这怎么可能? 谢谢 乔纳森

【问题讨论】:

    标签: wpf inkcanvas


    【解决方案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);
    

    【讨论】:

      【解决方案2】:
      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);  
      }
      

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

      【讨论】:

        【解决方案3】:

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

        查看示例以获取代码示例

        【讨论】:

        • 嗨,谢谢。但看起来定位不起作用。它总是把它放在前 100,100,即使我当然改变了参数
        • 您能否编辑您的问题并添加一些示例 xaml 和代码隐藏?
        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-23
          • 2012-04-08
          • 2022-07-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多