通常フリーハンドで線を描画すると、少しギザギザとした線になってしまいます。
滑らかな(ベジェスムージングを適用した)線を描画するには、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; }