【问题标题】:I can't change brush size in SurfaceInkCanvas我无法在 SurfaceInkCanvas 中更改画笔大小
【发布时间】:2012-11-13 10:37:53
【问题描述】:

我很难理解为什么我可以更改画笔颜色但无法更改 SurfaceInkCanvas 中的画笔半径。 这是我的工作:

Double newSize = Math.Round(BrushRadiusSlider.Value,0);

drawingAttributes = new System.Windows.Ink.DrawingAttributes();

// Works :
drawingAttributes.Color = Colors.Yellow;
// Does not work :
drawingAttributes.Width = newSize;
drawingAttributes.Height = newSize;

canvas.DefaultDrawingAttributes = drawingAttributes;

有关信息,BrushRadiusSlider 是 XAML 中的一个滑块,提供介于 1 和 100 之间的值。

【问题讨论】:

  • 你在用drawingAttributes做什么? newSize 的值是多少?请您提供一些 XAML 和更多代码来说明您正在使用它做什么?

标签: c# wpf xaml pixelsense inkcanvas


【解决方案1】:

请看这里:
SurfaceInkCanvas.DefaultDrawingAttributes Property

您可能忘记将UsesTouchShape 设置为false

【讨论】:

    【解决方案2】:

    问题是我认为当滑块的值改变时画笔没有更新。您上面的代码在某一时刻获取滑块的值,并将宽度和高度设置为该值,但它没有链接到滑块。

    要在滑块更改时更新它,您需要处理 SliderValueChanged 事件并然后重置绘图属性。

    XAML:

    <Slider x:Name="BrushRadiusSlider" Minimum="1" Maximum="100" Value="1" ValueChanged="SliderValueChanged"/>
    

    代码:

    private void SliderValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
    {
        if (canvas != null)
        {
            var drawingAttributes = canvas.DefaultDrawingAttributes;
            Double newSize = Math.Round(BrushRadiusSlider.Value, 0);
            drawingAttributes.Width = newSize;
            drawingAttributes.Height = newSize;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-05
      • 1970-01-01
      • 2018-06-08
      相关资源
      最近更新 更多