![]() |
|
|
![]()
|
|
| BOB4uK |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 28.2.2004 Репутация: нет Всего: нет |
Я уже запутался с пропорцями для вписывания графика в какую-нибудь облость с сохранением пропорций!
Подскажите как правельно и самое главное быстро вписать график в заданную облость при этом сохранив пропорции графика? Известна высота, ширина и координаты исходного графика, а так же высота и ширина облости в которую необходимо вписать… Примеры на рисунке… |
|||
|
||||
| SVN74 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 11 Всего: 18 |
Надо вставить фотки или чисто такие штучки рисовать?
|
|||
|
||||
| BOB4uK |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 28.2.2004 Репутация: нет Всего: нет |
чисто рисовать, координаты даны...
|
|||
|
||||
| Voronin_Igor |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 14.7.2008 Где: Петрозаводск Репутация: нет Всего: нет |
если отображать в разный окнах и что бы пропорции сохранялись, то в компоненте Image
нужно указать свойство proportional=true |
|||
|
||||
| SVN74 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 11 Всего: 18 |
Ну тогда все вообще очень просто... Надо создать массив координат точек, далее создать нужный нам размер окна, - к примеру можно для этого использовать компонент Image. Как видно из рисунков, - объект привязан к нижнему - левому углу, поэтому мы высчитываем нужные нам две координаты X,Y относительно окна. И самое главное, теперь мы смещаем весь рисунок в нужном нам направлении путем добавления X,Y к массиву координат нашего рисунка и получаем измененные координаты относительно окна. В принципе потом можно двигать весь рисунок по окну меняя X,Y. Я бы использовал бы в данной ситуации библиотеку Canvas. которая заложена в компоненте Image. Нет необходимости использовать здесь GDI. |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Согласен с SVN74.
Рисуй сразу на канве - зачем тянуть еще компонент. Можешь рисовать на TImage, а можешь и сразу на форме. По большому счету - разницы никакой. |
|||
|
||||
| BOB4uK |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 28.2.2004 Репутация: нет Всего: нет |
Я и так пользуюсь Canvas, суть вопроса НЕ В ТОМ, чтобы нарисовать картинку а потом выкинуть ее на экран например в TImage!!!
Нужно имея конкретную облость на экране , через канву нарисовать пропорционально график в этой облосте!!! |
|||
|
||||
| BOB4uK |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 28.2.2004 Репутация: нет Всего: нет |
А если координаты большие например 500;700 или отрицательные, то будет бяка же!? |
|||
|
||||
| SVN74 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 11 Всего: 18 |
||||
|
||||
| BOB4uK |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 28.2.2004 Репутация: нет Всего: нет |
А как множитель высчитать общий для X и Y?
|
|||
|
||||
| SVN74 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 11 Всего: 18 |
Очень просто... К примеру существует три координаты (фигура треугольник): X1 = 15; Y1 = 22; X2 = 60; Y2 = 10; X3 = 55; Y3 = 45; === Теперь не трудно себе представить. если мы все эти числа умножим к примеру на 10, то вся на фигура увечится в десять раз. Но наша фигура при этом тоже сместится в сторону увеличения координат, то для возврата нашей фигуры к стартовому положению, мы теперь должны отнять от всех координат число N, чтобы сместить рисунок назад по координатах, но общий размер нашего треугольника теперь будет в десять раз больше. А чтобы уменьшить размер фигуры к примеру в 10 раз, то множим на 0.1 + N (для смещения в нужную сторону). Кроме (N) можно еще прибавлять и отнимать X,Y соответственно их них координат... Это сообщение отредактировал(а) SVN74 - 10.2.2009, 19:52 |
|||
|
||||
| BOB4uK |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 28.2.2004 Репутация: нет Всего: нет |
Вот иходник того что я сделал:
Пропорции сохраняются, но вписаны в квадрат, то есть остается не задейсвованая облость!!! Как сденлать так чтобы рисовал на максимум доступной облости с сохранением пропорций? На рисунке показана область (wD), которую не задействовал алгоритм… Присоединённый файл ( Кол-во скачиваний: 12 )
1.JPG 29,03 Kb |
|||
|
||||
| SVN74 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 11 Всего: 18 |
Короче я тут специально набросал готовый примерчик, я думаю поможет: Пример написан на CodeGear 2009.
+ готовый файл. Присоединённый файл ( Кол-во скачиваний: 10 )
Project2.rar 269,28 Kb |
||||
|
|||||
| BOB4uK |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 28.2.2004 Репутация: нет Всего: нет |
Всего то не хвотало
if(N>N2) N = N2; СПАСИБО! ЗАРАБОТАЛО КАК НАДО! Присоединённый файл ( Кол-во скачиваний: 14 )
1.JPG 29,03 Kb |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |