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 イベントを処理してから 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;
    }
}
于 2012-11-13T13:27:37.573 に答える