InkPresenter 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
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
- 繼承
- 屬性
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 裝載模型藉由呼叫 ActivateCustomDrying (在載入 InkCanvas 之前),app 會建立 InkSynchronizer 物件,來自訂如何將筆墨筆劃以烘乾狀態轉譯到 SurfaceImageSource 或 VirtualSurfaceImageSource。 例如,筆墨筆劃會被點陣化並整合到應用程式內容,而不是做為個別的 InkCanvas 層。 InkDesktopHost (Windows 10 1511 版和更新版本) Win32 應用程式可以使用 DirectComposition 視覺化樹狀結構,在InkDesktopHost中裝載InkPresenter。 這需要 IInkD2DRenderer 物件來管理筆跡輸入 (請參閱 複雜筆跡範例) 。 CoreInkPresenterHost (Windows 10 Fall Creators Update 和更新版本) 在您自己的 Windows 中裝載InkPresenter。Ui。沒有相關聯InkCanvas 控制項的組合樹狀結構。 |
CopyDefaultDrawingAttributes() |
擷取InkPresenter在InkCanvas控制項上呈現新InkStroke時所使用的InkDrawingAttributes。 這個方法會與 UpdateDefaultDrawingAttributes 搭配使用,以在執行時間設定繪圖屬性。 |
SetPredefinedConfiguration(InkPresenterPredefinedConfiguration) |
設定相關聯 InkCanvas 控制項上一或多個接觸點的筆跡行為。 |
UpdateDefaultDrawingAttributes(InkDrawingAttributes) |
設定 InkPresenter 在InkCanvas控制項上呈現新InkStroke時,InkPresenter所使用的InkDrawingAttributes。 這個方法會與 CopyDefaultDrawingAttributes 搭配使用,以在執行時間設定繪圖屬性。 |
事件
StrokesCollected |
當應用程式執行緒將一或多個筆墨筆劃處理 (「濕度」處理為「幹」) 時發生。 根據預設,筆墨筆劃會在低延遲的背景執行緒上處理,並隨著繪製而呈現為濕度。 當筆劃完成 (畫筆或手指隨即轉移,或放開滑鼠按鍵) 時,會在 UI 執行緒上處理筆劃,並轉譯至 InkCanvas 層 (上方的應用程式內容) 。 如果 UI 執行緒忙碌中,當執行緒變成可用時,可能會處理一個以上的筆跡筆劃 (收集) 。 |
StrokesErased |
當使用畫筆橡皮擦從InkCanvas控制項中移除InkStroke物件時發生,或當 Mode設定為清除時,手寫筆筆提示時發生。 |