Mürekkep Toplama

Windows Presentation Foundation platformu, işlevselliğinin temel bir parçası olarak dijital mürekkep toplar. Bu konuda, Windows Presentation Foundation (WPF) içinde mürekkep toplama yöntemleri ele almaktadır.

Önkoşullar

Aşağıdaki örnekleri kullanmak için önce Visual Studio ve Windows SDK'sı yüklemeniz gerekir. WPF için uygulama yazmayı da anlamanız gerekir. WPF'ye başlama hakkında daha fazla bilgi için bkz. Adım adım: İlk WPF masaüstü uygulamam.

InkCanvas Öğesini Kullanma

öğesi, System.Windows.Controls.InkCanvas WPF'de mürekkep toplamanın en kolay yolunu sağlar. Mürekkep girişini InkCanvas almak ve görüntülemek için bir öğesi kullanın. Genellikle mürekkep vuruşları üretmek için bir dijitalleştiriciyle etkileşime geçen birtylus kullanarak mürekkep girişi yapmak için kullanılır. Buna ek olarak, bir fare, birtylus yerine kullanılabilir. Oluşturulan vuruşlar nesne olarak temsil eder ve hem program aracılığıyla Stroke hem de kullanıcı girişi tarafından iş oluşturulabilir. , InkCanvas kullanıcıların mevcut bir öğesini seçmesini, değiştirmesini veya silmesini Stroke sağlar.

XAML kullanarak, mürekkep koleksiyonunu ağacınıza bir InkCanvas öğesi eklemek kadar kolay bir şekilde kurabilirsiniz. Aşağıdaki örnek, içinde InkCanvas oluşturulan varsayılan bir WPF projesine bir Visual Studio:

<Grid>
  <InkCanvas/>
</Grid>

InkCanvas öğesi alt öğeler de içerebilir ve bu da neredeyse tüm XAML öğesi türüne mürekkep ek açıklama özellikleri eklemenizi sağlar. Örneğin metin öğesine inking özellikleri eklemek için öğesinin alt öğesi yapmanız InkCanvas gerekir:

<InkCanvas>
  <TextBlock>Show text here.</TextBlock>
</InkCanvas>

Bir görüntüyü mürekkeple işaretleme desteği eklemek de şu kadar kolaydır:

<InkCanvas>
  <Image Source="myPicture.jpg"/>
</InkCanvas>

InkCollection Modları

InkCanvas, özelliği aracılığıyla çeşitli giriş modları için destek EditingMode sağlar.

Mürekkep Işleme

, InkCanvas birçok mürekkep düzenleme işlemleri için destek sağlar. Örneğin, kalem arka silmeyi destekler ve öğeye işlev eklemek InkCanvas için ek kod gerekmez.

Seçim

Seçim modunu ayarlama, özelliğini Select olarak InkCanvasEditingMode ayarlama kadar InkCanvasEditingMode

Aşağıdaki kod, düzenleme modunu değerine göre CheckBox ayarlar:

// Set the selection mode based on a checkbox
if ((bool)cbSelectionMode.IsChecked)
{
    theInkCanvas.EditingMode = InkCanvasEditingMode.Select;
}
else
{
    theInkCanvas.EditingMode = InkCanvasEditingMode.Ink;
}
' Set the selection mode based on a checkbox
If CBool(cbSelectionMode.IsChecked) Then
    theInkCanvas.EditingMode = InkCanvasEditingMode.Select
Else
    theInkCanvas.EditingMode = InkCanvasEditingMode.Ink
End If

DrawingAttributes

Mürekkep DrawingAttributes vuruşlarının görünümünü değiştirmek için özelliğini kullanın. Örneğin, üyesi Color işlenen DrawingAttributes rengini Stroke ayarlar.

Aşağıdaki örnek, seçili vuruşların rengini kırmızıya değiştirir:

// Get the selected strokes from the InkCanvas
StrokeCollection selection = theInkCanvas.GetSelectedStrokes();

// Check to see if any strokes are actually selected
if (selection.Count > 0)
{
    // Change the color of each stroke in the collection to red
    foreach (System.Windows.Ink.Stroke stroke in selection)
    {
        stroke.DrawingAttributes.Color = System.Windows.Media.Colors.Red;
    }
}
' Get the selected strokes from the InkCanvas
Dim selection As StrokeCollection = theInkCanvas.GetSelectedStrokes()

' Check to see if any strokes are actually selected
If selection.Count > 0 Then
    ' Change the color of each stroke in the collection to red
    Dim stroke As System.Windows.Ink.Stroke
    For Each stroke In  selection
        stroke.DrawingAttributes.Color = System.Windows.Media.Colors.Red
    Next stroke
End If

DefaultDrawingAttributes

DefaultDrawingAttributesözelliği, içinde oluşturulacak vuruşların yüksekliği, genişliği ve rengi gibi özelliklere erişim InkCanvas sağlar. 'i değiştir DefaultDrawingAttributes ardından, içine girilen tüm gelecekteki InkCanvas vuruşlar yeni özellik değerleriyle işlenir.

Arka arkasındaki kod dosyasında dosyasını değiştirmeye ek olarak, özellikleri belirtmek DefaultDrawingAttributes için XAML söz dizimi DefaultDrawingAttributes kullanabilirsiniz.

Sonraki örnek, özelliğinin nasıl ayarlay olduğunu Color gösteriyor. Bu kodu kullanmak için, Visual Studio'de "HelloInkCanvas" adlı yeni bir WPF Visual Studio. MainWindow.xaml dosyasındaki kodu aşağıdaki kodla değiştirin:

<Window x:Class="HelloInkCanvas.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Ink="clr-namespace:System.Windows.Ink;assembly=PresentationCore"
    Title="Hello, InkCanvas!" Height="300" Width="300"
    >
  <Grid>
    <InkCanvas Name="inkCanvas1" Background="Ivory">
      <InkCanvas.DefaultDrawingAttributes>
        <Ink:DrawingAttributes xmlns:ink="system-windows-ink" Color="Red" Width="5" />
      </InkCanvas.DefaultDrawingAttributes>
    </InkCanvas>

    <!-- This stack panel of buttons is a sibling to InkCanvas (not a child) but overlapping it, 
         higher in z-order, so that ink is collected and rendered behind -->
    <StackPanel Name="buttonBar" VerticalAlignment="Top" Height="26" Orientation="Horizontal" Margin="5">
      <Button Click="Ink">Ink</Button>
      <Button Click="Highlight">Highlight</Button>
      <Button Click="EraseStroke">EraseStroke</Button>
      <Button Click="Select">Select</Button>
    </StackPanel>
  </Grid>
</Window>

Ardından aşağıdaki düğme olay işleyicilerini MainWindow sınıfının içindeki dosyanın arkasındaki koda ekleyin:

// Set the EditingMode to ink input.
private void Ink(object sender, RoutedEventArgs e)
{
    inkCanvas1.EditingMode = InkCanvasEditingMode.Ink;

    // Set the DefaultDrawingAttributes for a red pen.
    inkCanvas1.DefaultDrawingAttributes.Color = Colors.Red;
    inkCanvas1.DefaultDrawingAttributes.IsHighlighter = false;
    inkCanvas1.DefaultDrawingAttributes.Height = 2;
}

// Set the EditingMode to highlighter input.
private void Highlight(object sender, RoutedEventArgs e)
{
    inkCanvas1.EditingMode = InkCanvasEditingMode.Ink;

    // Set the DefaultDrawingAttributes for a highlighter pen.
    inkCanvas1.DefaultDrawingAttributes.Color = Colors.Yellow;
    inkCanvas1.DefaultDrawingAttributes.IsHighlighter = true;
    inkCanvas1.DefaultDrawingAttributes.Height = 25;
}

// Set the EditingMode to erase by stroke.
private void EraseStroke(object sender, RoutedEventArgs e)
{
    inkCanvas1.EditingMode = InkCanvasEditingMode.EraseByStroke;
}

// Set the EditingMode to selection.
private void Select(object sender, RoutedEventArgs e)
{
    inkCanvas1.EditingMode = InkCanvasEditingMode.Select;
}

Bu kodu kopyalayıp programı hata ayıklayıcısında Visual Studio F5 tuşuna basın.

düğmelerinin StackPanel üzerine nasıl yerlerinin olduğunu fark edesiniz. InkCanvas Düğmelerin üst kısmında mürekkep yapmaya çalışsanız, bu mürekkep, düğmelerin InkCanvas ardındaki mürekkepleri toplar ve işler. Bunun nedeni düğmelerin altların aksine ile InkCanvas altların altlıklarıdır. Ayrıca düğmeler z düzeninde daha yüksek olduğu için mürekkep arkalarında işlenir.

Ayrıca bkz.