我正在 wpf 中开发类似绘画的应用程序。我希望用户能够在图像或普通表面上添加一些绘图。我还想绘制一些基本形状,如线条、椭圆或矩形。我正在尝试使用一个墨水画布,我可以在其中进行手绘,但我不能像在油漆中那样绘制形状。谁能指导我并提供一些有关如何做的线索。请帮助我。任何输入将不胜感激。
4 回答
InkCanvas 中有两种集合:
笔划,由 StylusPoints 组成,由 DrawingAttributes 定义。这就是 Ink 的本质,由鼠标或手写笔绘制。
另一个是Children,它可以包含FrameworkElements。例如,Ellipse 是一个 Shape 是一个 FrameworkElement。
尝试使用 yourCanvas.Children.Add(ellipse) 看看你的表现如何。当然没有理由仅仅因为您还想使用预定义的形状而回避 InkCanvas。
不过,值得指出的是,InkCanvas 的弟弟 InkPresenter 没有 Children 属性。而 Silverlight 只有那个。
在这里http://ciintelligence.blogspot.com/2011/07/silverlight-drawing-tool-silver-draw.html 您可以找到更好的控件,它改进了 SilverDraw 控件并具有额外的功能:
特点是: * 您可以绘制基本形状,也可以使用手绘铅笔绘制。*您可以擦除绘图。*您可以撤消和重做绘图。* 可以在服务器端将绘图保存为 jpeg。
WPF 提供了一个 Shape 类,其中包含可以用来绘制形状的预构建方法。不要使用 inkcanvas,而是直接在画布上绘制。
这是一个简单的实现:
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);
}