在WPF InkCanvas中绘制基本形状

时间:2010-07-01 12:33:43

标签: wpf silverlight drawing inkcanvas

我正在研究wpf中的应用程序。我希望用户能够在图像或普通表面上添加一些绘图。我还想绘制一些基本形状,如直线,椭圆或矩形。我正在尝试使用inkcanvas,我可以做写意画,但我不能画像油漆中的形状。任何人都可以指导我并提供一些如何做的线索。请帮助我。任何输入将不胜感激。< / p>

4 个答案:

答案 0 :(得分:2)

InkCanvas中有两种集合:

笔划,由StylusPoints组成,由DrawingAttributes定义。这就是墨水是用鼠标或手写笔绘制的。

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

尝试使用yourCanvas.Children.Add(ellipse),看看你如何去。当然没有理由因为你也想使用预定义的形状而回避InkCanvas。

值得指出的是,InkCanvas的小弟弟InkPresenter没有儿童财产。 Silverlight只有那个。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

这是一个简单的实现:

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