![]() |
|
Модераторы: Akina |
![]()
|
|
| Kurt |
|
|||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: нет Всего: 36 |
Здравствуйте.
В процессе моей производственной деятельности (производство программ Т.е. надо изобразить точки и отрезки. Рисовать ручками не очень-то хочется: надо учитывать размеры формы, переворачивать ось OY etc. Может, есть какой компонент для этого? Или со стандартным MSChart как-нибудь поколдовать? Буду искренне рад ответу... -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
| Black_Star |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 9.9.2003 Где: Minsk Репутация: 4 Всего: 4 |
А зачем 0Y переворачивать? Об этом поподробнее пжлста...
А нарисовать отрезки и точки можно вери изи... не надо и на ограничения формы смотреть... |
|||
|
||||
| Kurt |
|
|||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: нет Всего: 36 |
Вери изи?
В общем так. Создается программа для социологических исследований. Но сейчас это не имеет значение. Нужно: Есть точки: допустим: (100,100), (-100,5) , (-300,500) Мне эти точки нужно отметить на форме, считая середину формы центром координат. 1-ю и 2-ю точки соединить отрезком. Выбрать правильный масштаб - чтоб все точки были видны. А так же эти точки должны быть изображены в соответствии с представлением простых смертных об осях координат ("OY - это когда ось направлена снизу вверх"). З.Ы. Реально будет около 500 точек. Но соединены будут немногие... -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Ну так помоему тут нет ничего сложного. Вот мои мысли по этому поводу:
1. Рисовать ты хочешь от центра формы. Отлично, вычисляем этот центр. Координаты у него такие P ( x | y ), где x = width / 2 и y = height/2 2. Подстраиваешь координаты своих точек под новый центр и получаешь: Z ( x + a | y - b ) a = X-координата твоей точки, b = Y-координата твоей точки для твоих примеров получаем: A ( x + 100 | y - 100 ), B ( x - 100 | y - 5 ), C ( x - 300, y - 500 ) 3. масштаб выберешь сам 4. соединяешь те новые точки, которые тебе надо. Может я ошибаюсь -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Очень просто. Элементарная зависимость. maxPoint - SizeOfGraf tekPoint - iskKoord откуда: iskKoord = tekPoint * SizeOfGraf / maxPoint Где iskKoord - искомая координата tekPoint - текущее значение точки (из соц. опроса) SizeOfGraf - размер оси в пикселах maxPoint - максимальное значение |
|||
|
||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: 2 Всего: 34 |
Очень просто. Элементарная зависимость. maxPoint - SizeOfGraf tekPoint - iskKoord откуда: iskKoord = tekPoint * SizeOfGraf / maxPoint Где iskKoord - искомая координата tekPoint - текущее значение точки (из соц. опроса) SizeOfGraf - размер оси в пикселах maxPoint - максимальное значение Извини, не подписался. |
|||
|
||||
| Black_Star |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 9.9.2003 Где: Minsk Репутация: 4 Всего: 4 |
Как я уже сказал "вери изи" Установка "размера" координат: me.Scale(x1,y1,x2,y2) где x1,y1 - левый верхний угол x2,y2 - правый нижний. Например: me.Scale(-5,-5,5,5) me.Pset(0,0),vbRed и точка будет точно по центру формы... Остается только знать мин. и макс. значения по Х и по У. |
|||
|
||||
| Black_Star |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 9.9.2003 Где: Minsk Репутация: 4 Всего: 4 |
И еще поправка, чтобы форма было похожа на реальную 2х мерную систему, надо писать:
me.Scale(-5,5,5,-5) |
|||
|
||||
| Kurt |
|
|||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: нет Всего: 36 |
Всем спасибо.
Balck_Star, мне твой метод больше всех понравился.. Я об этом не знал... -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
| cardinal |
|
||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Да, он прав. Еще осталось только сделать что-нибудь типа:
для того чтобы квадрат
оставался квадратом. Но тут есть какая-то недодумка с моей стороны потому, что квадрат не совсем квадратный, но почему это так я пока не допер. -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||
|
|||||
| Kurt |
|
|||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: нет Всего: 36 |
Естественно, он не будет квадратный - происходит трансформация координат "под форму" - цена деления привязывается к Width и Height: на одну координату вверх= на 5 пикселей вверх на одну координату влево = на 10 пикселей влево. Цифры 5, 10.. зависят от размеров формы - поэтому и квадрат "не будет квадратным" на неквадратной форме... (во загнул... -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Kurt, ты проведи такой эксперимент
и увидившь, что разницу между фигурами на глаз даже не видно, когда нарисуешь их несколько штук меняя при этом каждый раз размер формы. Поэтому я бы именно так и сделал: простая зависимость от размера формы. Мне просто в голову не приходит, как сделать Me.Scale по другому, чтобы квадрат более квадратный был -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Black_Star |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 9.9.2003 Где: Minsk Репутация: 4 Всего: 4 |
[QUOTE]Но тут есть какая-то недодумка с моей стороны потому, что квадрат не совсем квадратный, но почему это так я пока не допер.[QUOTE]
Возможно причина в том, что сама форма имеет "неквадратные" размеры Ежели width будет равна height, то квадрат будет похож на то, как называется |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
"Возможно" означает, что ты не уверен? Я просто еще раз хочу подчеркнуть, что если растягивать форму по горизонтали от совсем узкой до широкой (на весь экран) размер "квадрата" меняется не пропорционально этой растяжке. -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Black_Star |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 9.9.2003 Где: Minsk Репутация: 4 Всего: 4 |
О чем я и говорю!
А "неуверен", такого не бывает... Есть 3 причины: 1) растянута форма; 2) настройки экрана непропорциональны; 3) глаза косят |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Ну, короче если кто-то знает, как получить при любом размере формы один и тот же квадрат, пожалуйста, поделитесь.
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Black_Star |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 9.9.2003 Где: Minsk Репутация: 4 Всего: 4 |
2 способа:
1) Повесить на форму picturebox и в нем рисовать... 2) k=width/height me.scale (-5*k,5)-(5*k,-5) |
|||
|
||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: 2 Всего: 34 |
Может я не понял сути проблемы, но мне кажеться это очень просто.
Если стороны вашего псевдоквадрата зависят от Width и Height формы, то необходимо сравнить их между собой, а в формулу просто подставить меньшее значение. |
|||
|
||||
| Black_Star |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 9.9.2003 Где: Minsk Репутация: 4 Всего: 4 |
Помоему именно это я и предложил |
|||
|
||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: 2 Всего: 34 |
А делить-то зачем? Всё ж гораздо проще. Одна проверка и результат. |
|||
|
||||
| Black_Star |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 9.9.2003 Где: Minsk Репутация: 4 Всего: 4 |
Ню-ню... Интересно... и как это будет выглядеть ? |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |