none
Inkcanvas怎么设置硬笔,毛笔,荧光笔?? RRS feed

  • 问题

  • //硬笔
    drawingAttributes.IsHighlighter = false;
    drawingAttributes.IgnorePressure = false;
    drawingAttributes.StylusTip = StylusTip.Ellipse;
    drawingAttributes.StylusTipTransform = Matrix.Identity;
    drawingAttributes.FitToCurve = false;
    drawingAttributes.Height = drawingAttributes.Width/2;
    DrawInkCanvas.DefaultDrawingAttributes = drawingAttributes;
    
    //毛笔
    drawingAttributes.IsHighlighter = false;
    drawingAttributes.IgnorePressure = false;
    drawingAttributes.StylusTip = StylusTip.Ellipse;
    drawingAttributes.StylusTipTransform = Matrix.Identity;
    drawingAttributes.FitToCurve = false;
    drawingAttributes.Height = drawingAttributes.Width;
    DrawInkCanvas.DefaultDrawingAttributes = drawingAttributes;
    
    //荧光笔
     drawingAttributes.IsHighlighter = true;
     drawingAttributes.IgnorePressure = true;
     drawingAttributes.StylusTip = StylusTip.Rectangle;
     drawingAttributes.StylusTipTransform = Matrix.Identity;
     drawingAttributes.FitToCurve = true;
     drawingAttributes.Height = drawingAttributes*2;
     DrawInkCanvas.DefaultDrawingAttributes = drawingAttributes;

    这样设置怎么书写出来怎么都没有很大的区别啊??(备注:机器不能感应压力的)怎么设置或解决啊??
    2014年12月22日 8:02

全部回复

  • 你好 heller灬 ,

    你的DefaultDrawingAttributes 有没有跟着你所选择的Attribute进行变化?你用这些笔的时候有没有去测试你的Width和Height?然后这里的 drawingAttributes.Height = drawingAttributes*2;
    又代表什么意思?

    我们现在做一个简单的测试,用以下代码:

      DrawingAttributes inkDA;
    
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                inkCanvas1.Background = Brushes.DarkSlateBlue;
                inkCanvas1.DefaultDrawingAttributes.Color = Colors.SpringGreen;
    
               
                // Set up the DrawingAttributes for the pen.
                inkDA = new DrawingAttributes();
                inkDA.Color = Colors.SpringGreen;
                inkDA.Height = 5;
                inkDA.Width = 5;
                inkDA.FitToCurve = false;
                
                inkCanvas1.DefaultDrawingAttributes = inkDA;
                
    
            }

    能得到这个结果:

    当改变Width(15)和Height(15)的时候,就是这样:

    所以你需要注意的是,当你换了DrawingAttributes的时候,要用的InkCanvas去Apply这个新的DrawingAttributes,这样画出来才是不一样的大小。对于机器不能感应压力,那你就把IgnorePressure 设置成True吧,其他设置都没有用的。



    Barry
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年12月23日 3:33
    版主
  • 大小肯定是变的了。。。就是说硬笔,毛笔,荧光笔的特性没有表现出来啊,
    2014年12月24日 5:43
  • 能够通过在绘制的时候改变压力然后改变笔的厚度默认只能通过drawingAttributes.IgnorePressure而现在的问题是你想要实现这个效果你的机器没法识别压力的大小,所以如果想做到这一点用默认的一些class是不行的,你需要自己去写一些东西。比如如果是一个毛笔效果,你可以看Bob Bao的一个例子:https://social.msdn.microsoft.com/Forums/zh-cn/8eb17db3-6ae9-433c-861d-1bec332b7f36/wpf-inkcanvas

    我们需要去自定义墨迹,可以参考这里的MSDN文档:

    http://msdn.microsoft.com/zh-cn/library/ms747347.aspx

    具体的就是重写DrawCore



    Barry
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.


    2014年12月24日 9:34
    版主
  • 你说的链接我都看了。BOB的主要是设置了径向渐变画刷

    Pen pen = new Pen
          {
            Brush = new RadialGradientBrush(Color.FromArgb(0x66, 0x66, 0x66, 0x66),Color.FromArgb(0x00, 0xff,0xff,0xff)),  // 毛笔笔刷渐变色
            Thickness = 50,        //笔尖宽度
            StartLineCap = PenLineCap.Round,
            EndLineCap=PenLineCap.Round

    }

    这种画刷设置也没有毛笔那些笔锋效果啊,而且不好更改颜色,很模糊,还有没有别的画刷设置出来比较接近毛笔效果呢??

    2014年12月30日 6:26