InkPresenter Kelas

Definisi

Menyediakan properti, metode, dan peristiwa untuk mengelola input, pemrosesan, dan penyajian input tinta (standar dan dimodifikasi) untuk kontrol InkCanvas .

public ref class InkPresenter sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class InkPresenter final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class InkPresenter
Public NotInheritable Class InkPresenter
Warisan
Object Platform::Object IInspectable InkPresenter
Atribut

Persyaratan Windows

Rangkaian perangkat
Windows 10 (diperkenalkan dalam 10.0.10240.0 - for Xbox, see UWP features that aren't yet supported on Xbox)
API contract
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v1.0)

Contoh

Di sini, kami menunjukkan cara melapisi anotasi tinta pada gambar. Untuk contoh ini, data tinta tidak ditangkap atau disimpan oleh InkPresenter yang sesuai.

<ScrollViewer>
  <Grid>
    <Image Source="<path>"></Image>
    <InkCanvas x:Name="inkCanvas"></InkCanvas>
  </Grid>
</ScrollView

Di sini, kami mengonfigurasi InkPresenter untuk menginterpretasikan data input dari pena dan mouse sebagai goresan tinta. Kami juga mengatur beberapa atribut stroke tinta awal yang digunakan untuk merender stroke ke InkCanvas.

public MainPage()
{
    this.InitializeComponent();

    // Set supported inking device types.
    inkCanvas.InkPresenter.InputDeviceTypes = 
        Windows.UI.Core.CoreInputDeviceTypes.Mouse | 
        Windows.UI.Core.CoreInputDeviceTypes.Pen;

    // Set initial ink stroke attributes.
    InkDrawingAttributes drawingAttributes = new InkDrawingAttributes();
    drawingAttributes.Color = Windows.UI.Colors.Black;
    drawingAttributes.IgnorePressure = false;
    drawingAttributes.FitToCurve = true;
    inkCanvas.InkPresenter.UpdateDefaultDrawingAttributes(drawingAttributes);
}

Atribut goresan tinta dapat diatur secara dinamis untuk mengakomodasi preferensi pengguna atau persyaratan aplikasi.

Di sini, kami membiarkan pengguna memilih dari daftar warna tinta.

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <StackPanel x:Name="HeaderPanel" Orientation="Horizontal" Grid.Row="0">
        <TextBlock x:Name="Header" 
                   Text="Basic ink customization sample" 
                   VerticalAlignment="Center"
                   Style="{ThemeResource HeaderTextBlockStyle}" 
                   Margin="10,0,0,0" />
        <TextBlock Text="Color:"
                   Style="{StaticResource SubheaderTextBlockStyle}"
                   VerticalAlignment="Center"
                   Margin="50,0,10,0"/>
        <ComboBox x:Name="PenColor"
                  VerticalAlignment="Center"
                  SelectedIndex="0"
                  SelectionChanged="OnPenColorChanged">
            <ComboBoxItem Content="Black"/>
            <ComboBoxItem Content="Red"/>
        </ComboBox>
    </StackPanel>
    <Grid Grid.Row="1">
        <Image Source="Assets\StoreLogo.png" />
        <InkCanvas x:Name="inkCanvas" />
    </Grid>
</Grid>

Kami kemudian menangani perubahan pada warna yang dipilih dan memperbarui atribut goresan tinta yang sesuai.

// Update ink stroke color for new strokes.
private void OnPenColorChanged(object sender, SelectionChangedEventArgs e)
{
    if (inkCanvas != null)
    {
        InkDrawingAttributes drawingAttributes = 
            inkCanvas.InkPresenter.CopyDefaultDrawingAttributes();

        string value = ((ComboBoxItem)PenColor.SelectedItem).Content.ToString();

        switch (value)
        {
            case "Black":
                drawingAttributes.Color = Windows.UI.Colors.Black;
                break;
            case "Red":
                drawingAttributes.Color = Windows.UI.Colors.Red;
                break;
            default:
                drawingAttributes.Color = Windows.UI.Colors.Black;
                break;
        };

        inkCanvas.InkPresenter.UpdateDefaultDrawingAttributes(drawingAttributes);
    }
}

Keterangan

Untuk aplikasi Universal Windows, sebaiknya gunakan InkPresenter dan kontrol InkCanvas alih-alih InkManager.

Kelas InkPresenter tidak dapat diinstansiasi secara langsung. Ini dikembalikan sebagai properti dari objek InkCanvas .

Catatan

Input tinta standar (ujung pena atau tip/tombol penghapus) tidak dimodifikasi dengan ketergantungan sekunder, seperti tombol barel pena, tombol kanan mouse, atau serupa (lihat RightDragAction).

Secara default, input tinta standar dan yang dimodifikasi dikelola sepenuhnya oleh InkPresenter dan dirender ke InkCanvas sebagai goresan tinta atau stroke penghapusan, berdasarkan InkInputProcessingConfiguration.Mode.

Input yang dimodifikasi dapat diteruskan ke aplikasi Anda untuk diproses dengan mengatur InkInputProcessingConfiguration.RightDragAction ke InkInputRightDragAction.LeaveUnprocessed.

Semua input dapat diteruskan ke aplikasi Anda untuk diproses dengan mengatur InkInputProcessingConfiguration.Mode ke None.

Meninggalkan input yang tidak diolah oleh InkPresenter memungkinkan Anda mendukung pengalaman tinta yang disesuaikan dan fungsionalitas yang diperluas seperti pemilihan.

Untuk kontrol penuh input tinta dan untuk merendernya ke konteks perangkat Direct2D dari aplikasi Universal Windows Anda, alih-alih kontrol InkCanvas default, panggil ActivateCustomDrying sebelum memuat InkCanvas. Ini memerlukan objek IInkD2DRenderer untuk mengelola input tinta (lihat sampel tinta Kompleks).

Riwayat versi

Versi Windows Versi SDK Nilai ditambahkan
1703 15063 HighContrastAdjustment
1803 17134 InputConfiguration

Properti

HighContrastAdjustment

Mendapatkan atau mengatur bagaimana objek InkPresenter menangani input (standar dan dimodifikasi) dari kontrol InkCanvas terkait saat sistem berada dalam mode kontras tinggi.

InputConfiguration

Mendapatkan jenis input sekunder mana yang dapat diproses oleh objek InkPresenter .

InputDeviceTypes

Mendapatkan atau mengatur jenis perangkat input tempat data input dikumpulkan oleh InkPresenter untuk membangun dan merender InkStroke. Defaultnya adalah Pena.

InputProcessingConfiguration

Mendapatkan bagaimana input diproses oleh objek InkPresenter .

IsInputEnabled

Mendapatkan atau mengatur apakah input diaktifkan untuk penintaan.

StrokeContainer

Mendapatkan atau mengatur objek InkStrokeContainer untuk menyimpan dan mengelola koleksi objek InkStroke yang dirender oleh InkPresenter.

Modifikasi yang dilakukan pada salah satu goresan tinta dalam kontainer stroke segera dirender ke permukaan gambar yang terkait dengan InkPresenter.

StrokeInput

Mendapatkan objek InkStrokeInput untuk mengelola peristiwa input tinta.

UnprocessedInput

Mendapatkan input (standar atau dimodifikasi) dari kontrol InkCanvas terkait dan meneruskan data untuk pemrosesan kustom oleh aplikasi. Data tidak diproses oleh InkPresenter.

Catatan

Input standar tidak dimodifikasi dengan keterbayaran sekunder, seperti tombol laras pena, tombol kanan mouse, atau sejenisnya.

Gunakan InkInputProcessingConfiguration untuk menunjukkan input yang akan diteruskan sebagai InkUnprocessedInput ke aplikasi Anda untuk pemrosesan kustom.

Metode

ActivateCustomDrying()

Menunjukkan bahwa aplikasi Anda memerlukan kontrol penuh atas penyajian input tinta.

Secara default, input tinta diproses pada utas latar belakang latensi rendah dan dirender "basah" saat digambar. Ketika goresan selesai (pena atau jari diangkat, atau tombol mouse dilepaskan), goresan diproses pada utas UI dan dirender "kering" ke lapisan penyajian (di atas konten aplikasi dan mengganti tinta basah).

Model hosting InkPresenter

InkCanvas

Dengan memanggil ActivateCustomDrying (sebelum InkCanvas dimuat ), aplikasi membuat objek InkSynchronizer untuk menyesuaikan bagaimana goresan tinta dirender kering ke SurfaceImageSource atau VirtualSurfaceImageSource. Misalnya, goresan tinta dapat diraster dan diintegrasikan ke dalam konten aplikasi alih-alih sebagai lapisan InkCanvas terpisah.

InkDesktopHost (Windows 10 versi 1511 dan yang lebih baru)

Aplikasi Win32 dapat menghosting InkPresenter di InkDesktopHost menggunakan pohon visual DirectComposition.

Ini memerlukan objek IInkD2DRenderer untuk mengelola input tinta (lihat sampel tinta Kompleks).

CoreInkPresenterHost (Windows 10 Fall Creators Update dan yang lebih baru)

Host InkPresenter di Windows Anda sendiri .UI.Pohon komposisi tanpa kontrol InkCanvas terkait.

CopyDefaultDrawingAttributes()

Mengambil InkDrawingAttributes yang digunakan oleh InkPresenter saat merender InkStroke baru pada kontrol InkCanvas .

Metode ini digunakan bersama dengan UpdateDefaultDrawingAttributes untuk mengatur atribut gambar pada durasi.

SetPredefinedConfiguration(InkPresenterPredefinedConfiguration)

Mengatur perilaku penintaan dari satu atau beberapa titik kontak pada kontrol InkCanvas terkait.

UpdateDefaultDrawingAttributes(InkDrawingAttributes)

Mengatur InkDrawingAttributes yang digunakan oleh InkPresenter saat merender InkStroke baru pada kontrol InkCanvas .

Metode ini digunakan bersama dengan CopyDefaultDrawingAttributes untuk mengatur atribut gambar pada durasi.

Acara

StrokesCollected

Terjadi ketika satu atau beberapa goresan tinta diproses ("basah" hingga "kering") oleh utas aplikasi.

Secara default, goresan tinta diproses pada utas latar belakang latensi rendah dan dirender basah saat digambar. Ketika goresan selesai (pena atau jari diangkat, atau tombol mouse dilepaskan), goresan diproses pada utas UI dan dirender kering ke lapisan InkCanvas (di atas konten aplikasi). Jika utas UI sibuk, lebih dari satu goresan tinta mungkin diproses (dikumpulkan) saat utas tersedia.

StrokesErased

Terjadi ketika objek InkStroke dihapus dari kontrol InkCanvas menggunakan penghapus pena atau ujung pena saat Mode diatur ke Penghapusan.

Berlaku untuk

Lihat juga