Несколько областей отсечения на странице PDF не работают
Я использую 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);
}
Результат: Первый ярлык на каждой странице выглядит правильно, а остальные - в стиле фанк. Прямоугольник и круг отсутствуют, а текст вообще не обрезается.
Кто-нибудь видел / получил образец чего-то подобного?
Спасибо
1 ответ
Каждый звонок в
_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();
}