在现代的交互式应用中,识别放置在交互表面上的物体是一项重要的功能。Surface SDK 提供了一种方式来识别带有特定标签的物体。这些标签可以是字节标签或身份标签,并且可以通过 Surface SDK 进行读取和处理。本文将介绍如何使用 Surface SDK 来实现这一功能。
首先,需要在 Visual Studio 2008 中创建一个 Surface 项目。这可以通过使用 Visual Studio 提供的模板来完成。创建项目后,将添加一个 TagVisualizer 到 SurfaceWindow1 中。
TagVisualizer 是响应带有标签的物体并在物体放置时显示 TagVisualization 的组件。以下是在 XAML 中添加 TagVisualizer 的示例代码:
<s:TagVisualizer Name="TagVisualizer">
</s:TagVisualizer>
接下来,需要创建一个 TagVisualization,这将是在表面上显示的内容。可以通过添加新项来创建 TagVisualization。以下是创建名为 SampleTagVisualization 的 TagVisualization 的示例代码:
<s:TagVisualization x:Class="MySurfaceApplication.SampleTagVisualization"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="http://schemas.microsoft.com/surface/2008"
Loaded="SampleTagVisualization_Loaded">
<Grid Height="400" Width="600" Background="White">
<TextBlock Text="Some Tagged Object UI here." VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="Red" />
</Grid>
</s:TagVisualization>
TagVisualizationDefinition 用于定义 TagVisualizer 将响应的标签值,以及可视化的源、物理位置、方向和其他属性。可以通过 XAML 或代码后台来添加这个定义。以下是通过 XAML 添加的示例代码:
<s:TagVisualizer Name="TagVisualizer">
<s:TagVisualizer.Definitions>
<s:ByteTagVisualizationDefinition Value="192" Source="SampleTagVisualization.xaml" UsesTagOrientation="True" TagRemovedBehavior="Fade" PhysicalCenterOffsetFromTag="7.5,4.5" />
</s:TagVisualizer.Definitions>
</s:TagVisualizer>
或者,可以通过代码后台添加这个定义:
ByteTagVisualizationDefinition tagVisualizationDefinition = new ByteTagVisualizationDefinition();
tagVisualizationDefinition.Value = 192;
tagVisualizationDefinition.Source = new Uri("SampleTagVisualization.xaml", UriKind.Relative);
tagVisualizationDefinition.UsesTagOrientation = true;
tagVisualizationDefinition.TagRemovedBehavior = TagRemovedBehavior.Fade;
tagVisualizationDefinition.PhysicalCenterOffsetFromTag = new Vector(7.5, 4.5);
TagVisualizer.Definitions.Add(tagVisualizationDefinition);