PDF页面上的多个剪辑区域无法正常工作

时间:2018-05-16 12:54:04

标签: skiasharp

我正在使用SkiaSharp将标签打印到PDF(和其他东西)。 PDF的每个页面都可以有多个行和列。我需要将每个标签剪裁成正确的尺寸,这样它就不会丢弃相邻的标签。

为了进行测试,每个标签都有一个延伸得太远的矩形加上7行文字和一个靠近垂直中间的圆圈。

我的代码就像:

using (var region = new SKRegion())
{
   region.SetRect(_labelClipRect);
   _currentCanvas.ClipRegion(region, SKClipOperation.Intersect);
   _labelView.Draw(_currentCanvas, _printRequest.Device.DPI, xOffsetPX, yOffsetPX);
}

结果是: Snippet of a PDF showing clipping errors 每页上的第一个标签看起来都是正确的,但其余的都很时髦。缺少矩形和圆形,文本根本没有剪裁。

有人见过这样的样品吗?

由于

1 个答案:

答案 0 :(得分:0)

每次调用 _currentCanvas.ClipRegion 都会将传递的区域与当前的区域相交,它不会将剪辑设置到该区域。

尝试保存画布状态并在标签绘制后恢复:

using (var region = new SKRegion())
{
   region.SetRect(_labelClipRect);
   _currentCanvas.Save();
   _currentCanvas.ClipRegion(region, SKClipOperation.Intersect);
   _labelView.Draw(_currentCanvas, _printRequest.Device.DPI, xOffsetPX, yOffsetPX);
   _currentCanvas.Restore();
}
相关问题