Несколько областей отсечения на странице 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);
}

Результат: Фрагмент PDF-файла с ошибками отсечения Первый ярлык на каждой странице выглядит правильно, а остальные - в стиле фанк. Прямоугольник и круг отсутствуют, а текст вообще не обрезается.

Кто-нибудь видел / получил образец чего-то подобного?

Спасибо

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();
}
Другие вопросы по тегам