2015-08-03 4 views
3

Я использую PDFsharp, чтобы нарисовать линии довольно сложной формы. Чтобы упростить этот процесс и сделать его более понятным, я хотел бы изменить начало координат в верхнем левом углу страницы в левом нижнем углу. В настоящее время изменение исходного кода - not yet implemented. Есть ли способ переместить начало в нижний левый угол, используя методы, такие как RotateTransform и TranslateTransform или иначе? Насколько я могу судить, вращательное преобразование вращается вокруг начала координат. Может быть, трюк я не знаю. ИспользованиеPDFsharp Change Origin

gfx.RotateTransform(180); 
gfx.TranslateTransform(-612, -792); // Assumes 8.5 inch x 11 inch at 72 points/inch 

Я могу переместить его в нижнее правое положение так, чтобы х увеличивалось, оставаясь слева, но добавленный текст перевернулся. Generated PDF

Есть ли способ по-настоящему переместить начало в левое нижнее положение так, чтобы y увеличивалось, а x увеличилось и направо? Заранее спасибо.

EDIT: Ответ ThomasH перемещает начало координат в левое нижнее положение, но текст по-прежнему переворачивается. Есть ли способ преодолеть это? См. Приведенный здесь пример: http://pastebin.com/fgfjDXF1

ответ

1

Комбинация TranslateTransform и ScaleTransform(1,-1) должна делать то, что вы хотите.

+0

Спасибо! Это переместило начало в нижний левый, но текст все еще перевернут. Это побочный эффект ScaleTransform? Если это так, некоторые изменения могут его избежать? –

+0

Вот пример, иллюстрирующий проблему с текстом: http://pastebin.com/fgfjDXF1 –

+0

Решил перевернутый текст для моего конкретного приложения с помощью методов Save() и Restore() XGraphics. Я делаю два прохода. Сохраните исходное состояние. Первое масштабирование и перевод на этот ответ, нарисуйте фигуру и запишите точки, где должны быть нарисованы метки. Затем восстановите исходное состояние. Теперь второй проход включает в себя выполнение перевода, но не масштабирование, а затем запись меток в точках. Таким образом, они появляются справа и вверх в правильном положении. –