当唯一的InputDeviceType of InkPresenter是CoreInputDeviceTypes::InkPresenter时,InkCanvas会发出ManipulationDelta事件。当我将InputDeviceType更改为更多类型时,则不会。为什么会这样呢?
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发布于 2020-06-10 06:03:54
基于备注部分的InkCanvas,它提到:
InkPresenter的配置决定了InkCanvas的指针事件处理行为。必须将InkPresenter.InputDeviceTypes设置为CoreInputDeviceTypes.None,以便InkCanvas处理指针事件,否则它们将传递给InkPresenter对象。
因此,如果您将InputDeviceTypes设置为Pen,当您使用鼠标进行笔画时,InkCanvas可以处理指针事件。但是,如果将InputDeviceTypes设置为鼠标,并使用鼠标进行笔画,则InkCanvas无法处理指针事件,它将被传递给InkPresenter对象。如果要捕获鼠标移动的事件,可以订阅StrokeContinued事件。
.h:
void MyStrokeContinued(Windows::UI::Input::Inking::InkStrokeInput^ sender, Windows::UI::Core::PointerEventArgs^ e);.cpp:
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
}https://stackoverflow.com/questions/62288643
复制相似问题