我正在使用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);
}
Run Code Online (Sandbox Code Playgroud)
结果是:
每页上的第一个标签看起来都是正确的,但其余的都很时髦.缺少矩形和圆形,文本根本没有剪裁.
有人见过这样的样品吗?
谢谢
每次调用都会将_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();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
109 次 |
最近记录: |