InkPresenter 類別

定義

提供屬性、方法和事件,以管理 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
繼承
Object Platform::Object IInspectable InkPresenter
屬性

Windows 需求

裝置系列
Windows 10 (已於 10.0.10240.0 - for Xbox, see UWP features that aren't yet supported on Xbox 引進)
API contract
Windows.Foundation.UniversalApiContract (已於 v1.0 引進)

範例

在這裡,我們會示範如何在影像上重迭筆跡注釋。 在此範例中,筆跡資料不會由對應的 InkPresenter 擷取或儲存。

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

我們會在此處設定InkPresenter,將來自畫筆和滑鼠的輸入資料解譯為筆墨筆劃。 我們也會設定一些初始筆墨筆劃屬性,以用來將筆劃轉譯到 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);
}

您可以動態設定筆墨筆劃屬性,以適應使用者的喜好設定或應用程式需求。

我們將在此處讓使用者可從筆墨色彩清單中進行選擇。

<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>

接著處理選取色彩的變更,並據此更新筆墨筆劃屬性。

// 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);
    }
}

備註

針對通用 Windows 應用程式,我們建議使用 InkPresenter 和 InkCanvas 控制項,而不是 InkManager

InkPresenter 類別無法直接具現化。 它會以 InkCanvas 物件的屬性傳回。

注意

標準筆跡輸入 (畫筆提示或橡皮擦筆尖/按鈕) 不會使用次要能供性修改,例如畫筆筆筒按鈕、滑鼠右鍵或類似 (請參閱 RightDragAction) 。

根據預設,標準和修改的筆跡輸入都是由InkPresenter管理,並根據InkInputProcessingConfiguration.Mode轉譯為InkCanvas,以筆墨筆劃或清除筆劃呈現。

您可以將 InkInputProcessingConfiguration.RightDragAction 設定為 InkInputRightDragAction.LeaveUnprocessed,將修改的輸入傳遞至您的應用程式進行處理。

您可以將 InkInputProcessingConfiguration.Mode 設定為 None,將所有輸入傳遞至您的應用程式進行處理。

讓 InkPresenter不處理輸入,可讓您支援自訂的筆跡體驗和擴充功能,例如選取專案。

若要完整控制筆跡輸入,並將它轉譯為通用 Windows 應用程式的 Direct2D 裝置內容,而不是預設InkCanvas控制項,請在載入InkCanvas之前呼叫ActivateCustomDrying。 這需要 IInkD2DRenderer 物件來管理筆跡輸入 (請參閱 複雜筆跡範例) 。

版本歷程記錄

Windows 版本 SDK 版本 新增值
1703 15063 HighContrastAdjustment
1803 17134 InputConfiguration

屬性

HighContrastAdjustment

取得或設定當系統處於高對比模式時 ,InkPresenter 物件如何處理來自相關聯 InkCanvas 控制項的輸入 (標準和修改) 。

InputConfiguration

取得 InkPresenter 物件可以處理的次要輸入類型。

InputDeviceTypes

取得或設定 InkPresenter 從中收集輸入資料的輸入裝置類型,以建構和轉譯 InkStroke。 預設值為 Pen

InputProcessingConfiguration

取得 InkPresenter 物件的輸入處理方式。

IsInputEnabled

取得或設定輸入是否啟用筆跡。

StrokeContainer

取得或設定InkStrokeContainer物件,以儲存和管理InkPresenter所呈現之InkStroke物件的集合。

對筆劃容器中任何筆墨筆劃所做的修改會立即轉譯為與 InkPresenter相關聯的繪圖介面。

StrokeInput

取得用於管理筆跡輸入事件的 InkStrokeInput 物件。

UnprocessedInput

從相關聯的 InkCanvas 控制項取得輸入 (標準或修改) ,並傳遞資料以供應用程式自訂處理。 InkPresenter不會處理資料。

注意

標準輸入不會使用次要能供性修改,例如畫筆筆筒按鈕、滑鼠右鍵或類似專案。

使用 InkInputProcessingConfiguration 來指出要傳遞為 InkUnprocessedInput 的輸入到您的應用程式以進行自訂處理。

方法

ActivateCustomDrying()

表示您的應用程式需要完全控制筆跡輸入轉譯。

根據預設,筆墨輸入是在低延遲背景執行緒上處理,並在其繪製期間轉譯為「濕潤」狀態。 當筆劃完成 (畫筆或手指隨即轉移,或放開滑鼠按鍵) 時,會在 UI 執行緒上處理筆劃,並將「幹」轉譯為應用程式內容上方的轉譯層 (,並取代水墨) 。

InkPresenter 裝載模型

InkCanvas

藉由呼叫 ActivateCustomDrying (在載入 InkCanvas 之前),app 會建立 InkSynchronizer 物件,來自訂如何將筆墨筆劃以烘乾狀態轉譯到 SurfaceImageSourceVirtualSurfaceImageSource。 例如,筆墨筆劃會被點陣化並整合到應用程式內容,而不是做為個別的 InkCanvas 層。

InkDesktopHost (Windows 10 1511 版和更新版本)

Win32 應用程式可以使用 DirectComposition 視覺化樹狀結構,在InkDesktopHost中裝載InkPresenter

這需要 IInkD2DRenderer 物件來管理筆跡輸入 (請參閱 複雜筆跡範例) 。

CoreInkPresenterHost (Windows 10 Fall Creators Update 和更新版本)

在您自己的 Windows 中裝載InkPresenter。Ui。沒有相關聯InkCanvas 控制項的組合樹狀結構。

CopyDefaultDrawingAttributes()

擷取InkPresenterInkCanvas控制項上呈現新InkStroke時所使用的InkDrawingAttributes

這個方法會與 UpdateDefaultDrawingAttributes 搭配使用,以在執行時間設定繪圖屬性。

SetPredefinedConfiguration(InkPresenterPredefinedConfiguration)

設定相關聯 InkCanvas 控制項上一或多個接觸點的筆跡行為。

UpdateDefaultDrawingAttributes(InkDrawingAttributes)

設定 InkPresenter 在InkCanvas控制項上呈現新InkStroke時,InkPresenter所使用的InkDrawingAttributes

這個方法會與 CopyDefaultDrawingAttributes 搭配使用,以在執行時間設定繪圖屬性。

事件

StrokesCollected

當應用程式執行緒將一或多個筆墨筆劃處理 (「濕度」處理為「幹」) 時發生。

根據預設,筆墨筆劃會在低延遲的背景執行緒上處理,並隨著繪製而呈現為濕度。 當筆劃完成 (畫筆或手指隨即轉移,或放開滑鼠按鍵) 時,會在 UI 執行緒上處理筆劃,並轉譯至 InkCanvas 層 (上方的應用程式內容) 。 如果 UI 執行緒忙碌中,當執行緒變成可用時,可能會處理一個以上的筆跡筆劃 (收集) 。

StrokesErased

當使用畫筆橡皮擦從InkCanvas控制項中移除InkStroke物件時發生,或當 Mode設定為清除時,手寫筆筆提示時發生。

適用於

另請參閱