【问题标题】:Drawing Basic Shapes in WPF InkCanvas在 WPF InkCanvas 中绘制基本形状
【发布时间】:2010-07-01 12:33:43
【问题描述】:

我正在开发类似 wpf 中的绘画应用程序。我希望用户能够在图像或平面上添加一些绘图。我还想绘制一些基本形状,如线条、椭圆或矩形。我正在尝试使用墨水画布,我可以在其中进行手绘,但我不能像在油漆中那样绘制形状。谁能指导我并提供一些有关如何做的线索。请帮助我。任何输入将不胜感激。

【问题讨论】:

  • 任何人..?我尝试了一些示例,但无法完成我正在寻找的工作。我想像在 mspaint 中一样绘制一个圆形或一个矩形。我想标记图像的某些部分并将输出保存为图像。这就是我想到的原因使用inkcanvas。但无法通过。请引导我。

标签: wpf silverlight drawing inkcanvas


【解决方案1】:

InkCanvas 中有两种集合:

笔划,由 StylusPoints 组成,由 DrawingAttributes 定义。这就是 Ink 的本质,由鼠标或触控笔绘制。

另一个是Children,可以包含FrameworkElements。例如,Ellipse 是一个 Shape 是一个 FrameworkElement。

尝试使用 yourCanvas.Children.Add(ellipse) 看看效果如何。当然没有理由仅仅因为您还想使用预定义的形状而回避 InkCanvas。

不过,值得指出的是,InkCanvas 的小兄弟 InkPresenter 没有 Children 属性。而 Silverlight 只有那个。

【讨论】:

  • Silverlight InkPresenter 有一个 Children 属性。我想知道它是否在早期版本中没有?
【解决方案2】:

WPF 提供了一个 Shape 类,其中包括可以用来绘制形状的预构建方法。不要使用 inkcanvas,而是直接在画布上绘制。

【讨论】:

  • hmm..我选择了 inkcanvas,因为它提供了保存笔画的内置功能
  • 但是,它的灵活性较差。
【解决方案3】:

这里http://ciintelligence.blogspot.com/2011/07/silverlight-drawing-tool-silver-draw.html 您可以找到更好的控件,它通过额外的功能改进了 SilverDraw 控件:

特点是: *您可以绘制基本形状,也可以使用手绘铅笔绘制。 *您可以擦除绘图。 *您可以撤消和重做绘图。 * 可以在服务器端将绘图保存为 jpeg。

【讨论】:

    【解决方案4】:

    这是一个简单的实现:

    public void drawCircleAp(Double EHeight, Double EWidth, InkCanvas surface)
    {
      Ellipse e1 = new Ellipse();
      e1.Width = EWidth;
      e1.Height = EHeight;
      var brush = new SolidColorBrush();
      brush.Color = Color.FromArgb(100, 0, 0, 0);
      e1.Stroke = brush;
      e1.StrokeThickness = 4;
      surface.Children.Add(e1);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 2013-12-01
      • 1970-01-01
      • 2013-07-14
      相关资源
      最近更新 更多