| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Ошибка при масштабировании графики |
| Автор: seraffim 6.12.2012, 15:29 | ||
| Здравствуйте ,написал программу для вывода точек в builder ,но допустил ошибку и 2 день её вылавливаю , был бы рад ,если бы указали на неё . На форме есть GroupBox , по высоте он равен форме . Пытаюсь вывести на свободное пространство точки и оси X,Y , предварительно отмаштабировав ,но большинство точек выходят за пределы видимой области формы. maxx,minx,maxy,максимальные и минимальные координаты по х и у, m - массив координат .
Добавление : После многократного разбора ошибка вроде бы была найдена (к1 и к2 нужно брать по модулю),но всё-равно ,иногда точки уходят за форму и при большой разнице между максимумом и минимумом по X или Y (порядка 300) всё точки кучкуются на осях, в чём же дело ? |
| Автор: artsb 6.12.2012, 21:42 |
| Ничего не понятно. Вы можете привести скрины, как "должно быть" и как "получается". |
| Автор: seraffim 6.12.2012, 22:00 |
| Должно быть как-то вот так http://s53.radikal.ru/i139/1212/33/558c1b3d1898.jpg, а частенько выходит так - http://s018.radikal.ru/i520/1212/ba/06c50e5d2448.jpg. |
| Автор: artsb 6.12.2012, 22:21 | ||
| Ясно. А что за переменные maxx,minx,maxy,miny? Как они рассчитываются? Добавлено через 4 минуты и 26 секунд По-моему, x0 и y0 проще рассчитать так:
|
| Автор: seraffim 6.12.2012, 22:26 | ||
Максимальные и минимальные значения по X и Y :
|
| Автор: artsb 7.12.2012, 08:46 | ||
![]() Оно?
|
| Автор: seraffim 7.12.2012, 19:30 | ||
Уножение на -1 ?? |
| Автор: artsb 7.12.2012, 21:25 |
Да. Чтобы правильно выставить ось Y. Я так понял, что фигура должна занимать всё свободное место. |
| Автор: seraffim 7.12.2012, 21:50 | ||
| Да ,всё свободное место. Если я правильно понял основную мысль будет так :
Используем Heigh вместо ClientHeight из-за того,что этот кусок будет использоваться в функции перирисовки . |
| Автор: seraffim 7.12.2012, 22:38 | ||
Тоже самое почти , но мне так понятнее При использовании ClientHeight нельзя будет использовать для перерисовки эту же функцию. |
| Автор: artsb 7.12.2012, 22:51 | ||
Но так как я написал - работает
С чего вы взяли? Я использовал. Всё работало. |
| Автор: seraffim 7.12.2012, 23:04 |
| Ну ClientHeight ,как я помню , размер доступной пользователю формы по Y ,а ,если ,например , форму опистить вниз до упора,то ClientHeight ->0 и из рисунка получится невесть что. Результаты эксперимента : до - http://s49.radikal.ru/i125/1212/57/d10872261e40.jpg , после выхода за пределы рабочего стола - http://s017.radikal.ru/i417/1212/5b/bba20fcfb2d3.jpg . |
| Автор: artsb 7.12.2012, 23:37 | ||
Значит вы что-то не так делаете. Потому что, у меня всё чётко рисуется. И кстати, разберитесь с осями. Почему они у вас всё время прыгают? Они должны либо находиться чётко по центру, либо так как у меня на скриншоте выше. А у вас то так, то сяк |