墨迹控件
平板电脑平台提供两个控件 :InkEdit 和 InkPicture,使你能够轻松地将墨迹和手写识别添加到平板电脑应用程序。 InkEdit 控件具有 托管的 ActiveX 和 Win32 版本,而 InkPicture 只有托管 的 InkPicture 和 ActiveX 版本。
控件之间的主要区别在于数据的保存方式。 默认情况下,InkEdit 控件将墨迹保存为文本,而 InkPicture 将墨迹保存为墨迹。
InkEdit 控件用于通过手写识别输入文本。 InkPicture 用于批注 (例如,标记演示文稿幻灯片或其他图片) 。
在托管代码中,在窗体的main线程所在的线程中创建墨迹控件。 如果在其他线程中创建 InkEdit 或 InkPicture 控件,则应用程序可能无法正确响应。
在创建墨迹控件之前,应将线程模型显式更改为单线程单元 (STA) 。 这会导致在main线程上创建控件。 可以使用以下托管 C++ 代码显式设置线程模型。
Thread::get_CurrentThread()->set_ApartmentState(ApartmentState::STA);
可以使用以下代码在 C# 中执行相同操作。
System.Threading.Thread.CurrentThread.ApartmentState = System.Threading.ApartmentState.STA;
在托管代码中,若要避免内存泄漏,必须在已附加事件处理程序的任何平板电脑控件上显式调用 Dispose 方法,然后控件才会超出范围。
以下各节介绍墨迹控件以及墨迹控件在应用程序中的使用: