С Новым годом! Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.81/48: Рейтинг темы: голосов - 48, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 85

Рисование эллипса под углом, WinApi

22.11.2011, 19:14. Показов 10006. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, в WinApi для рисования эллипса используется функция Ellipse(), но она рисует только горизонтальное или вертикальное расположение, если ли функция, для прорисовки эллипса, под нужным углом наклона? Всем неравнодушным, заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.11.2011, 19:14
Ответы с готовыми решениями:

Найдите эксцентриситет эллипса, если малая ось эллипса видна из фокуса под углом 90 градусов
Найдите эксцентриситет эллипса, если малая ось эллипса видна из фокуса под углом 90 градусов. Если честно, то вообще не пойму, как...

Соединение двух точек кривой, Построение дуги эллипса под углом
Задание такое: задается две произвольные точки после чего из нужно соединить кривой. Думал сделать это при помощи эллипса, но...

Рисование линий под углом в 45 градусов
Всё перерыл нигде нет этого а надо очень(((( помогите пожалуйста Необходимо написать программу на языке Assembler в среде Borland...

21
Заблокирован
22.11.2011, 19:37
C++
1
bool Ellipse(DC: HDC, X1, Y1, X2, Y2: Integer)
В этой функции 5 параметров:
1) Идентификатор графического устройства, то есть HDC
2) x1,y1 - левый верхний угол
3) x1,y1 - правый нижний угол

P.S Надеюсь, что для вас не секрет, что этой WinApi функцией
рисуется прямоугольник, внутри которого эллипсис...
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
22.11.2011, 19:47
Цитата Сообщение от mc.Duck Посмотреть сообщение
P.S Надеюсь, что для вас не секрет, что этой WinApi функцией
рисуется прямоугольник, внутри которого эллипсис...
А что вы можете двумя точками задать прямоугольник, который наклонен, например, на 45% относительно оси x/y?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
22.11.2011, 19:47
mc.Duck, при чём сдесь это? ты бы хоть в суть темы вник

~GiPeRPrOgEr~, сомневаюсь что у вас получится нарисовать эллипс под углом функцией Ellipse(), разве что вы откопаете функцию для задания матричного преобразования
0
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 85
22.11.2011, 19:52  [ТС]
Ну это та же функция про которую я говорил, для меня не секрет что он рисуется в прямоугольнике, но секрет то как этот прямоугольник вертеть под нужным мне углом.

Добавлено через 1 минуту
Jupiter - я знаю что не получится, поэтому и обратился за помощью!
0
Заблокирован
22.11.2011, 21:38
~GiPeRPrOgEr~, мой совет такой: заводишь переменную типа Canvas, далее присваиваешь ей хендл идентификатора устройства и затем рисуешь в канве, как в painbox`е.
Используя там Polygon/PolyBezier
1
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 85
22.11.2011, 21:39  [ТС]
Спасибо, еще бы небольшим примерчиком все это снабдить...
0
Заблокирован
22.11.2011, 21:46
~GiPeRPrOgEr~, ну, у тебя, как я понимаю C++ Builder, да?
Я вообще-то программист Delphi, но Delphi от Builder`а несильно отличается набором
коимонентом и их методами, нк и тем более WinApi. Я тоже сталкивался с твоей проблемой,
но решил её, как говорил выше))) Могу дать код на делфях, думаю разберешься
1
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 85
22.11.2011, 21:48  [ТС]
У меня Visual C++, думаю разберусь, большое спасибо!))
0
Заблокирован
22.11.2011, 21:54
~GiPeRPrOgEr~, пожалуйста! Надеюсь, тебе понятно, о чем я говорил...
0
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 85
22.11.2011, 21:55  [ТС]
Я имею ввиду разберусь с дельфийским кодом!!!))))
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
23.11.2011, 16:14
Не пробовал с такой проблемой бодаться, но думаю, есть решение попроще.
Рисуем на канве обычный эллипс, а потом делаем resize той области, где мы этот эллипс нарисовали, но не пропорциональный, а с искажением. То есть сжимаем картинку, допустим, по горизонтали, а эллипс у нас был нарисован по диагонали - получаем эффект наклона.
1
Заблокирован
23.11.2011, 19:22
BRcr, а еще проще будет сделать масштабирование bmp-рисунка в канве методом "StretchDraw". Этим методом обладает любая канва
1
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 85
23.11.2011, 23:30  [ТС]
больше спасибо, только я вот с этим типом данных никогда не работал, если есть возможность,можно пример?
0
Заблокирован
24.11.2011, 10:47
~GiPeRPrOgEr~, скажи свою конкретную задачу)
0
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 85
25.11.2011, 23:33  [ТС]
Мне нужно нарисовать цветок, липистки которого представленны в ввиде эллипсов
эллипсы рисуются по горизонтали и вертикали, и вот по кругу что бы нарисовать их нужно поворачивать, чего сделать я не могу.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
26.11.2011, 01:04
Может, это окажется полезным:
Повернуть Image
Вращение изображений в Borland C++ Builder
1
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 85
27.11.2011, 11:48  [ТС]
К сожалению нет, но все равно спасибо.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
27.11.2011, 17:28
Можно так, правда через GDI+:
C++
1
2
3
4
5
6
7
8
9
VOID Example_TranslateTransform(HDC hdc)
{
   Graphics graphics(hdc);
   Pen pen(Color(255, 0, 0, 255));
 
   graphics.RotateTransform(30.0f);
   graphics.TranslateTransform(100.0f, 50.0f, MatrixOrderAppend);
   graphics.DrawEllipse(&pen, 0, 0, 200, 80);
}
MatrixOrder - [in] Optional. Element of the MatrixOrder enumeration that specifies the order of multiplication. MatrixOrderPrepend specifies that the translation matrix is on the left, and MatrixOrderAppend specifies that the translation matrix is on the right. The default value is MatrixOrderPrepend.
C++
1
2
3
4
typedef enum {
    MatrixOrderPrepend = 0,
    MatrixOrderAppend = 1
} MatrixOrder;
The RotateTransform method updates the world transformation matrix of this Graphics object with the product of itself and a rotation matrix.
C++
1
2
3
4
Status RotateTransform(
    REAL angle,
    MatrixOrder order
);
angle - [in] Real number that specifies the angle, in degrees, of rotation.
order - [in] Optional. Element of the MatrixOrder enumeration that specifies the order of multiplication. MatrixOrderPrepend specifies that the rotation matrix is on the left, and MatrixOrderAppend specifies that the rotation matrix is on the right. The default value is MatrixOrderPrepend.
The TranslateTransform method updates this Graphics object's world transformation matrix with the product of itself and a translation matrix.
C++
1
2
3
4
5
Status TranslateTransform( 
    REAL dx,
    REAL dy,
    MatrixOrder order
);
Parameters
dx - [in] Real number that specifies the horizontal component of the translation.
dy - [in] Real number that specifies the vertical component of the translation.
order - [in] Optional. Element of the MatrixOrder enumeration that specifies the order of multiplication. MatrixOrderPrepend specifies that the translation matrix is on the left, and MatrixOrderAppend specifies that the translation matrix is on the right. The default value is MatrixOrderPrepend.
Return Value
1
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 85
28.11.2011, 20:56  [ТС]
К сожалению только WinApi(((( но все равно спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.11.2011, 20:56
Помогаю со студенческими работами здесь

Рисование дополнительной линии под углом к основной линии
Доброго времени суток, всем. Помогите решить вопрос. Есть макрос рисующий линию между двумя координатами. Как изменить макрос,...

Рисование эллипса
Является ли приемлемой такая реализация рисования эллипса? uses GraphABC; procedure RLine(x, y, x2, y2: real):=Line(Round(x),...

Рисование эллипса
Нужно нарисовать 5 эллипсов, а внутри ещё 5 с помощью OpenGL, но сейчас не об этом, ПОДСКАЖИТЕ, пожалуйста, как нарисовать этот эллипс?...

Рисование эллипса
Когда я рисую новый эллипс - старый исчезает. Это происходит из-за команды pictureBox1.Refresh(). Но если эту строчку убрать, то...

Рисование эллипса
в общем суть задачи такая. есть некоторый panel, на котором расположена матрица из лейблов. (что-то вроде замены пикселей, только...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru