PDF手势缩放
需求
实现pdf页面双指放大效果
主要问题
原本这个问题可以简单地通过wpf的manipulate相关事件来实现,但是开启此事件的拦截会导致已有的pdf第三方库失效。
实现方案
通过采集更原始的TouchMove事件实现自己的手势判断逻辑。
具体来讲,
两个以上触摸点存在时,任意一个触摸点的远离将导致pdf放大,靠近将导致pdf缩小。
距离的计算为计算最近更新的两个触摸点的距离,当距离变化累计超过一个阈值时计算一次缩放倍率。
实现代码
private void zoom(object sender, TouchEventArgs e) {
//if (true) return;
int id = e.TouchDevice.Id;
pos[id] = e.GetIntermediateTouchPoints(this)[0].Position;
if (idSeq.Count == 0) {
idSeq.AddLast(id);
}else {
if (id == idSeq.Last()) {
} else {
idSeq.AddLast(id);
}
while (idSeq.Count > 2) {
id