R>>Все прикольно, все получилось, но у меня теперь текст который я вывожу как:
R>>R>>e.Graphics.DrawString("Sample", drawFont, drawBrush, x, y);
R>>
R>>выводится кверх ногами и буквы инвертированы. Как с этим бороться?
O>А что ты хотел? Изучай геометрию
O>Представь себе, что ты нарисовал на листочке всё что надо, а потом его перевернул (отразить относительно горизонтальной оси сложно будет) — как у тебя буквы будут выглядеть? Если же тебе кое-что отражать, а кое-что нет, то придётся работать руками и головой. Магии нет
Действительно, тут ничего не поделаешь: так уж заведено, что верхний край строки текста соответствует меньшему значению Y-координаты, а нижний — большему. Единственно, если нужно и рисовать и писать текст одновременно, причем при рисовании ость Y должна быть направлена снизу вверх, а текст выводиться в тех же координатах, что и рисунок, то можно немного задачу упростить. Для этого:
0. На этом шаге рисунок уже нарисован, Graphics находится в системе координат рисунка.
1. Cконструировать Matrix с обратным преобразованием из координат рисунка в координаты клиентской области (делается одним вызовом конструктора Matrix).
2. Координаты строки текста в системе рисунка передать методу Matrix.TransformPoints().
3. Переключться в систему координат клиентской области вызовом Graphics.ResetTransform().
4. Рисовать текст, используя координаты, полученные на шаге 2.
По крайней мере, это снимает необходимость пересчитывать координаты вручную.