ペンの色を変更するには、DefaultDrawingAttributes プロパティを使用します。
DefaultDrawingAttributes プロパティにはSystem.Windows.Ink.DrawingAttribute クラスのインスタンスを指定ます。
通常の色を使用するには Color プロパティを、蛍光ペンのような色を使用するにはIsHighlighter プロパティを使用します。
下記はペンの色を設定する例です。
ラジオボタンで「通常ペン」または「蛍光ペン」を選択することができます。またスライダーコントロールでアルファ値(透明度)や色を変更することができます。
XAMLの例
<StackPanel> <Grid Height="126"> <GroupBox Header="ペンの種類" HorizontalAlignment="Left"> <StackPanel> <RadioButton Content="通常ペン" Name="radioNormalPen" /> <RadioButton Content="蛍光ペン" Name="radioHighlightPen" /> </StackPanel> </GroupBox> <TextBlock Text="アルファ" VerticalAlignment="Top" /> <TextBlock Text="赤" VerticalAlignment="Top" /> <TextBlock Text="緑" VerticalAlignment="Top" /> <TextBlock Text="青" VerticalAlignment="Top" /> <Slider Name="SliderA" Minimum="0" Maximum="255"/> <Slider Name="SliderR" Minimum="0" Maximum="255"/> <Slider Name="SliderG" Minimum="0" Maximum="255"/> <Slider Name="SliderB" Minimum="0" Maximum="255"/> </Grid> <InkCanvas Name="InkCanvas1" EditingMode="Ink" /> </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 radioHighlightPen.IsChecked = True 'ペン幅の初期化(20にする) inkDA.Width = 20 inkDA.Height = 20 'ペンの色を黒で初期化 inkDA.Color = Colors.Black '上で作成した属性値をキャンバスにセット InkCanvas1.DefaultDrawingAttributes = inkDA End Sub ' 通常ペン Private Sub radioNormalPen_Checked(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles radioNormalPen.Checked '蛍光ペンをオフ(通常のペン) inkDA.IsHighlighter = False InkCanvas1.DefaultDrawingAttributes = inkDA End Sub ' 蛍光ペン Private Sub radioHighlightPen_Checked(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles radioHighlightPen.Checked '蛍光ペンをオン inkDA.IsHighlighter = True InkCanvas1.DefaultDrawingAttributes = inkDA End Sub ' アルファ変更時 Private Sub Slider_ValueChanged(ByVal sender As System.Object, ByVal e As System.Windows.RoutedPropertyChangedEventArgs(Of System.Double)) Handles SliderA.ValueChanged, SliderR.ValueChanged, SliderG.ValueChanged, SliderB.ValueChanged UpdatePen() End Sub ' スライダーの設定を反映させる Private Sub UpdatePen() Dim penColor As New Color 'ペンの色を作成 penColor = Color.FromArgb( Convert.ToByte(SliderA.Value), Convert.ToByte(SliderR.Value), Convert.ToByte(SliderG.Value), Convert.ToByte(SliderB.Value)) '作成した色をペンに割り当てる inkDA.Color = penColor InkCanvas1.DefaultDrawingAttributes = inkDA End Sub
C#の例
// 追加 using System.Windows.Ink; // 描画属性用変数 private DrawingAttributes inkDA = new DrawingAttributes(); private void Window_Loaded(object sender, RoutedEventArgs e) { radioHighlightPen.IsChecked = true; // ペン幅の初期化(20にする) inkDA.Width = 20; inkDA.Height = 20; //ペンの色を黒で初期化 inkDA.Color = Colors.Black; // 上で作成した属性値をキャンバスにセット inkCanvas1.DefaultDrawingAttributes = inkDA; } // 通常ペン private void radioNormalPen_Checked(object sender, RoutedEventArgs e) { // 蛍光ペンをオフ(通常のペン) inkDA.IsHighlighter = false; inkCanvas1.DefaultDrawingAttributes = inkDA; } // 蛍光ペン private void radioHighlightPen_Checked(object sender, RoutedEventArgs e) { // 蛍光ペンをオン inkDA.IsHighlighter = true; inkCanvas1.DefaultDrawingAttributes = inkDA; } // アルファ変更時 private void slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e) { UpdatePen(); } // スライダーの設定を反映させる private void UpdatePen() { Color penColor = new Color(); // ペンの色を作成 penColor = Color.FromArgb( Convert.ToByte(sliderA.Value), Convert.ToByte(sliderR.Value), Convert.ToByte(sliderG.Value), Convert.ToByte(sliderB.Value)); // 作成した色をペンに割り当てる inkDA.Color = penColor; inkCanvas1.DefaultDrawingAttributes = inkDA; }