我无法在SurfaceInkCanvas中更改画笔大小

时间:2012-11-13 10:37:54

标签: c# wpf xaml pixelsense inkcanvas

我很难理解为什么我可以更改画笔颜色但不能更改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之间。

2 个答案:

答案 0 :(得分:2)

见这里:
SurfaceInkCanvas.DefaultDrawingAttributes Property

您可能忘记将UsesTouchShape设置为 false

答案 1 :(得分:0)

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

要在滑块更改时更新它,您需要处理SliderValueChanged事件并重置drawingAttributes。

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