Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Повернуть прямоуголник на заданный угол


Автор: Podarochek 9.7.2008, 12:08
Подскажите пож. как можно нарисовать прямоуголник или еллипс под углом. стандартные функции рисут их же горизонтально...

Автор: Lazin 9.7.2008, 12:29
в общем случае - прямыми линиями/кривыми безье

Автор: Podarochek 9.7.2008, 13:10
слышал о том что можно повернуть контекст при рисовании...

Автор: Draeden 9.7.2008, 20:43
MSDN: ExtCreateRegion

Автор: GremlinProg 10.7.2008, 16:40
ExtCreateRegion - зачем?

SetWorldTransform() - для поворота, указываем матрицу преобразования, как обычно

 | 1  | 0  | 0 |
 | 0  | 1  | 0 |
 | -x | -y | 1 |

        X

 | cos(a) | sin(a) | 0 |
 | -sin(a ) |cos(a)| 0 |
 | 0         | 0        | 1 |

       X

 | 1   | 0   | 0 |
 | 0   | 1   | 0 |
 | +x | +y | 1 |

x и y - координаты точки вокруг которой происходит поворот
а - угол в радианах

последний столбец в матрицах исключен за ненадобностью, он учитывается автоматически, для масштабирования есть другие инструменты, или простая матрица

 | sx | 0   | 0 |
 | 0   | sy | 0 |
 | 0   | 0  | 1 |

где sx и sy - коэффициенты масштабирования

ModifyWorldTransform() - для последовательных трансформаций

CombineTransform() - для перемножения нескольких матриц

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)