SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Silverlight/WPFで使える逆引きTips集

Silverlight/WPFで使える逆引きTips集
――インクキャンバス機能

(6) InkCanvasコントロール

ダウンロード InkCanvas_WPF_VB.zip (2.0 MB)
ダウンロード InkCanvas_WPF_CS.zip (72.0 KB)

06.滑らかな線を描く

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

 滑らかな線を描画するには DefaultDrawingAttributes プロパティを使用して、FitToCurve プロパティに True をセットする。

次のページ
07.ジェスチャを認識する

この記事は参考になりましたか?

Silverlight/WPFで使える逆引きTips集連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5666 2011/01/13 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー