通常フリーハンドで線を描画すると、少しギザギザとした線になってしまいます。
滑らかな(ベジェスムージングを適用した)線を描画するには、DefaultDrawingAttributes プロパティを使用して、FitToCurve プロパティに True をセットします。
下記は、滑らかな線を描画する例です。
ラジオボタンで「通常の線」を選択したときには少しギザギザとした線になり、「滑らかな線」を選択したときには、ギザギザの少ない線になります。
XAMLの例
<StackPanel>
<StackPanel Orientation="Horizontal">
<RadioButton Content="通常の線" Name="rdoFitToCurveOff" />
<RadioButton Content="滑らかな線" Name="rdoFitToCurveOn" />
</StackPanel>
<InkCanvas Name="InkCanvas1" EditingMode="Ink">
<InkCanvas.DefaultDrawingAttributes>
<DrawingAttributes FitToCurve="True" />
</InkCanvas.DefaultDrawingAttributes>
</InkCanvas>
</StackPanel>
VBの例
'***** 追加 *****
Imports System.Windows.Ink
'描画属性用変数
Private inkDA As New DrawingAttributes
' 初期化処理
Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
'ペンの幅を5にする
inkDA.Width = 5
inkDA.Height = 5
InkCanvas1.DefaultDrawingAttributes = inkDA
End Sub
' 「通常の線」選択時の処理
Private Sub rdoFitToCurveOff_Checked(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles rdoFitToCurveOff.Checked
'FitToCurve を Off にする
inkDA.FitToCurve = False
InkCanvas1.DefaultDrawingAttributes = inkDA
End Sub
' 「滑らかな線」選択時の処理
Private Sub rdoFitToCurveOn_Checked(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles rdoFitToCurveOn.Checked
'FitToCurve を On にする
inkDA.FitToCurve = True
InkCanvas1.DefaultDrawingAttributes = inkDA
End Sub
C#の例
// 追加
using System.Windows.Ink;
// 描画属性用変数
private DrawingAttributes inkDA = new DrawingAttributes();
/// 初期化処理
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// ペンの幅を5に設定する
inkDA.Width = 5;
inkDA.Height = 5;
inkCanvas1.DefaultDrawingAttributes = inkDA;
}
/// 「通常の線」選択時の処理
private void rdoFitToCurveOff_Checked(object sender, RoutedEventArgs e)
{
// FitToCurve を Off にする
inkDA.FitToCurve = false;
inkCanvas1.DefaultDrawingAttributes = inkDA;
}
/// 「滑らかな線」選択時の処理
private void rdoFitToCurveOn_Checked(object sender, RoutedEventArgs e)
{
// FitToCurve を On にする
inkDA.FitToCurve = true;
inkCanvas1.DefaultDrawingAttributes = inkDA;
}
