![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
Янычар |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 115 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Подскажите пожалуйста как мне переместить начало системы координат в центр экрана. Я так понял что с помощью функции SetMapMode(HDC hdc, int nMapMode) можно поменять систему координат и например если второй параметр будет MM_LOMETRIC то это уже будет метрическая система координат и оси буду расположены в привычном виде. Тока я вот это делю и после этого рисунка на экране уже не видно, возможно потому что ось ординат находится выше клиентской области... Так вт как мне эту ситсему переместить в центр окна???Тока желательно проверенный метод а то кое какие функции я уже нашел но не получается.. Заранее спасибо.
Добавлено через 19 мин. Отвечаю: Прежде, чем выполнять перемещение начала координат, следует определить размеры внутренней области окна. Это можно сделать при обработке сообщения WM_SIZE : static short cxClient, cyClient; .... case WM_SIZE: { cxClient = LOWORD(lParam); cyClient = HIWORD(lParam); .... return 0; } а затем помещаем систему в центр окна SetViewportOrg(hdc, cxClient/2, cyClient/2); перед этим нужно было определить SetMapMode(hdc, MM_LOMETRIC ) |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Тока желательно проверенный метод а то кое какие функции я уже нашел но не получается.. Хотелось бы уточнить, что именно у тебя не получается? Вот так, скажем:SetMapMode(hdc, MM_LOMETRIC); рисуется синусоида из центра окна, следовательно, начало координат туда было успешно перенесено... |
Янычар |
![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 115 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Ну собственно тот же результат что и я написал. Но есть одно но в этом: нельзя использовать координаты с отрицательным значением а мне бы хотелось чтобы можно было) Так что вопрос как это сделать...
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата Но есть одно но в этом: нельзя использовать координаты с отрицательным значением Да что ты говоришь... Может, при твоем способе и нельзя... Но ты сам его предложил, я предложил тебе другое. Так вот, добавь минус перед i:for (int i = 0; i < Width; i += 2) LineTo(hdc, -i, Height/2*sin(i*4*3.1416/Width)); и скажи, чего тебе не так? Что, график не ушел влево от начала координат? Это не отрицательное значение абсциссы? Я уж не говорю о том, что Sin иногда... как бы это тебе сказать... отрицательным бывает, однако график-то строится, и уходит в минус и по оси ординат... |
Янычар |
![]()
Сообщение
#5
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 115 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Ну чего то и при твоем не получается... Может это из-за того что я пользуюсь контекстом памяти?А оттуда переношу с помощью битовой карты на контекст устройства.Я хз может там по-другому надо как то
|
![]() ![]() |
![]() |
Текстовая версия | 24.07.2025 3:25 |