2016-12-24 6 views
0

Я пытаюсь найти способ рисовать строки на определенную точку (X, Y) и угол поворота. Это звучит просто, но у меня возникают настоящие проблемы с моей головой.Программно добавить текст к точке в форме с поворотом

Я пытался выяснить, как использовать drawstring для этого, но пока мне удалось отобразить текст, если я изменю угол поворота, положение меняется тоже, несмотря на позицию, о которой я говорю рисовать при том же.

Я уже давно общался с ним, и поэтому мне было интересно, может ли кто-нибудь объяснить, как работает шнур? Пожалуйста, не просто дайте мне кусок кода, я действительно хочу понять, что происходит.

ответ

1

Как вы уже можете нарисовать текст я предполагаю, что вы делаете, что в OnPaint обработчик:

Итак:

// Copy Graphics object from EventArgs 
Graphics g = e.Graphics; 
// Save the current Matrix of the Graphics object 
var currentMatrix = g.Save(); 
// Reset the Matrix to Identity matrix 
g.Reset(); 
// Move the text Position to 0/0 
g.TranslateTransform(-textPosition.X, -textPosition.Y); 
// Torsten in origin 
g.RotateTransform(angle); 
// Move Back the drawing point 
g.TranslateTransform(textPosition.X, textPosition.Y); 
// Draw text 
g.DrawString(..); 
// restore saved Matrix. 
G.Restore(currentMatrix); 

Bewahre это псевдо код, который должен быть улучшен вами. (Сейчас я нахожусь на мобильном телефоне). Надеюсь, я не ошибаюсь в последовательности инструкций.

Merry X-Mas

+0

привет спасибо за быстрый ответ. Я работал с вашим псевдокодом. Мне пришлось поменять две строки: «g.TranslateTransform (-textPosition.X, -textPosition.Y);» и «g.TranslateTransform (textPosition.X, textPosition.Y)», «только для тех, кто читает это в будущем. Я уже немного перепутал с ним, и я думаю, что понимаю. Матрица похожа на поверхность вы передаете текст через форму, и это то, что вы вращаете, а не текст. Правильно ли это? – Dan