考虑一下UWP应用程序上的以下InkCanvas,它是网格中唯一的元素(为了简洁而省略)
<InkCanvas x:Name="inkCanvas" Width="500" Height="500"/>画一个从InkCanvas内部的某个地方开始的笔画,并在InkCanvas边界之外延长您的笔画。在视觉上,您将有这样的印象,即笔画结束于边界(例如,在InkCanvas的右边边缘)。但这不是真的。通过按钮调整InkCanvas的大小。
private void SizeButton_Click(object sender, RoutedEventArgs e)
{
inkCanvas.Width = 2000;
inkCanvas.Height = 2000;
} 你会看到在InkCanvas之外画出的笔画部分。这部分也将是可见的,如果你保存你的中风到一个gif或isf,无论是否调整大小,这是非常不幸的。windows商店中有几个具有输墨功能的应用程序也存在这个问题。
问:为什么是这样,我们怎样才能避免?
发布于 2017-04-09 14:58:27
在InkCanvas出现之前,我曾与一个团队一起做过软件的链接工作,我们也遇到了同样的问题。“当用户将钢笔拖到允许他们墨水的矩形区域外时,我们该怎么办?”我们最终得出了与InkCanvas相同的结论,那就是保持这条道路的前进。
做出这一决定的原因是经过了一些尝试和错误。
我们试着剪下这条路,也就是说,在它与边缘相交的地方切断它。但是我们经历了一个问题,用户在盒子外运行钢笔,然后又以同样的笔画回来。把它想象成一个签名盒。我们给用户一个虚线区域,用户可以在其中进行数字签名,但几乎每个人都有一个夸张的签名,可以退出虚线区域的边界。我们不能剪辑,因为我们实际上会失去签名的一个重要部分。
我们还试着抓取通往边缘的路径。当用户拖出框外时,墨迹将沿区域边缘垂直或水平地断裂。至少使用这种方法,用户将得到在拖出区域时所发生的事情的即时反馈。这太可怕了。糟糕的用户体验和大量的仇恨邮件。
所以..。我们把它单独留下了。盒子不会以任何方式影响墨水的笔触。
现在帮你解决你的处境。如果要剪切路径,可以使用Win2D将累积的墨迹笔画转换为几何,并将其与与InkCanvas (500x500)相同大小的矩形几何图形相交。如果你对这个方向感兴趣,迈克·陶蒂有一篇关于这件事的帖子。我唯一不确定的是,您是否可以将最终的裁剪几何转换回InkStroke。可能是单方行动。你得把它挖出来。
https://stackoverflow.com/questions/43307518
复制相似问题