1

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

4

2 回答 2

2

请参见此处:
SurfaceInkCanvas.DefaultDrawingAttributes 属性

您可能忘记设置UsesTouchShapefalse

于 2012-11-13T17:48:14.477 回答
0

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

要在滑块更改时更新它,您需要处理 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;
    }
}
于 2012-11-13T13:27:37.573 回答