首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InkCanvas操纵事件

InkCanvas操纵事件
EN

Stack Overflow用户
提问于 2020-06-09 17:37:51
回答 1查看 82关注 0票数 1

当唯一的InputDeviceType of InkPresenter是CoreInputDeviceTypes::InkPresenter时,InkCanvas会发出ManipulationDelta事件。当我将InputDeviceType更改为更多类型时,则不会。为什么会这样呢?

代码语言:javascript
复制
InkCanvas->InkPresenter->InputDeviceTypes = CoreInputDeviceTypes::Mouse | CoreInputDeviceTypes::Touch | CoreInputDeviceTypes::Pen;

InkCanvas->ManipulationMode = ManipulationModes::Scale | ManipulationModes::TranslateX | ManipulationModes::TranslateY;
InkCanvas->ManipulationDelta += ref new ManipulationDeltaEventHandler(this, &ClassName::OnManipulationDeltaEvent); // OnManipulationDeltaEvent does not get called
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-10 06:03:54

基于备注部分的InkCanvas,它提到:

InkPresenter的配置决定了InkCanvas的指针事件处理行为。必须将InkPresenter.InputDeviceTypes设置为CoreInputDeviceTypes.None,以便InkCanvas处理指针事件,否则它们将传递给InkPresenter对象。

因此,如果您将InputDeviceTypes设置为Pen,当您使用鼠标进行笔画时,InkCanvas可以处理指针事件。但是,如果将InputDeviceTypes设置为鼠标,并使用鼠标进行笔画,则InkCanvas无法处理指针事件,它将被传递给InkPresenter对象。如果要捕获鼠标移动的事件,可以订阅StrokeContinued事件。

.h:

代码语言:javascript
复制
void MyStrokeContinued(Windows::UI::Input::Inking::InkStrokeInput^ sender, Windows::UI::Core::PointerEventArgs^ e);

.cpp:

代码语言:javascript
复制
MainPage::MainPage()
{
    InitializeComponent();

    InkCanvas->InkPresenter->InputDeviceTypes = CoreInputDeviceTypes::Mouse| CoreInputDeviceTypes::Pen;
    InkCanvas->InkPresenter->StrokeInput->StrokeContinued += ref new Windows::Foundation::TypedEventHandler< InkStrokeInput^, Windows::UI::Core::PointerEventArgs^>(this, &MainPage::MyStrokeContinued);
}

void MainPage::MyStrokeContinued(InkStrokeInput^ sender, Windows::UI::Core::PointerEventArgs^ e) {
    //do somthing
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62288643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档