У меня есть простое демонстрационное приложение, которое использует изображение в качестве фона InkCanvas, и я масштабирую штрихи при изменении размера отображения изображения, чтобы они оставались в одном и том же месте относительно изображения. Поскольку вы можете рисовать -> изменять размер -> рисовать -> изменять размер -> рисовать, это означает, что я должен каждый раз масштабировать каждый штрих на разную величину, назначая PointTransform для каждого штриха.
float thisScale = (float)(scale / _prevScale);
foreach (InkStroke stroke in myCanvas.InkPresenter.StrokeContainer.GetStrokes())
{
float thisPointScale = thisScale * stroke.PointTransform.M11;
stroke.PointTransform = Matrix3x2.CreateScale(new Vector2(thisPointScale));
}
Это отлично изменяет длину штрихов. Однако это никак не влияет на толщину штрихов. Это еще более очевидно, когда вы используете толстое или неоднородное перо (например, маркер).
Эти ссылки на два клипа экрана, которые показывают результаты. Полноэкранный – https://1drv.ms/i/s!ArHMZAt1svlBiZZDfrxFqyGU1bJ6MQ Меньшее окно – https://1drv.ms/i/s!ArHMZAt1svlBiZZCqHHYaISPfWMMpQ
Любые идеи о том, как я могу изменить толщину штрихов?