Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2011, 19:35   #1
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию Пропорции

Здравствуйте.

Подскажите, пожалуйста, как пропорции расчитать.

Есть канва размером 330х330. На ней необходимо отрисовывать линии, но есть координаты которые переваливают за 30000.

Пользуясь пропорцией
30000 - 330
25000 - X
где 30000 максимальный объём равный по пропорции 330
и 25000 текущее значение точки, а X - это как раз нужное значение для отображении на сетке 330х330.

Но основная проблема, что при таких больших числах линиий которые я черчу на канве выглядят очень маленькими(см. рисунок).

Подскажите как сделать, чтобы всё было так же на холсте размером 330х330, но линии были почти на весь холст???
Изображения
Тип файла: jpg pic.JPG (22.2 Кб, 111 просмотров)
Arkuz вне форума Ответить с цитированием
Старый 11.02.2011, 19:45   #2
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

а если просто попробывать так
25000*330/30000 = 275
потом округлять, если надо, правда есть погрешность при округлении

Цитата:
Подскажите как сделать, чтобы всё было так же на холсте размером 330х330, но линии были почти на весь холст???
не совсем понятно, маленькая по отношению к чему? к холсту? или тебе видно плохо? если всего 330 а размер 2, так и должно быть маленькое
может зделаеш что то типа 330 значение(если 330 принципиально) пусть на екран выводит как 1000, и все размеры аналогично
но:
два раза надо будет проделывать одно и тоже
погрешность увеличица

можно за максимум принять не 330, а 500 например?
VirusN13

Последний раз редактировалось ArtGrek; 11.02.2011 в 19:54.
ArtGrek вне форума Ответить с цитированием
Старый 11.02.2011, 20:16   #3
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Цитата:
а если просто попробывать так
25000*330/30000 = 275
потом округлять, если надо, правда есть погрешность при округлении
Так и делаю...

Цитата:
не совсем понятно, маленькая по отношению к чему? к холсту? или тебе видно плохо? если всего 330 а размер 2, так и должно быть маленькое
Маленькое - видно плохо. Но я понимаю, что это правильно, что если координата 30000, а линия длиной 2, то она как точка будет. Вот как раз от этого надо избавиться. Как-то нужно сделать, чтобы именно на холсте 330х330 с любой координатой точки линии были почти на весь холст (330х330). Типа автомасштабирования. Как бы это сделать???
Arkuz вне форума Ответить с цитированием
Старый 11.02.2011, 20:24   #4
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

по 1 линии будет рисоваться? или оновременно на картинке могут быть: линия = 2 и линия = 150?
VirusN13

Последний раз редактировалось ArtGrek; 11.02.2011 в 20:43.
ArtGrek вне форума Ответить с цитированием
Старый 11.02.2011, 22:36   #5
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

линий может быть несколько, но они приблизительно равного размера, могут отличаться размерами на 5-10%
Arkuz вне форума Ответить с цитированием
Старый 11.02.2011, 22:42   #6
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

узнаи размер самои большои линии
переведи например начало 1000 = 11 и конец 5000 = 55
она будет на весь график, вот так
ось X: 0__11__________________55__330
а остальные рисуи внутри
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 12.02.2011, 01:57   #7
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Что-то я не совсем понял
может проект выложить и вы мне по коду объясните, что вы хотите сделать...

Или я могу привести конкретно текст программы, где отрисовка на канве происходит... А там ориентируясь по коду вы объясните мне, что имели ввиду

Последний раз редактировалось Arkuz; 12.02.2011 в 01:59.
Arkuz вне форума Ответить с цитированием
Старый 12.02.2011, 02:35   #8
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Видимо я нашёл выход...
Забыл сказать, что на графике мне координаты не нужны вообще. График служит лишь для того, чтобы посмотреть, вообще как выглядятпрямые, под каким они углом.

Решение состояло в следующем...

Канва квадратная, поэтому по пропорции представляем, что длина канвы = 12 (не беру 10, чтобы точку лучше было видно).
А потом всё просто, если значение координаты точки не находится в пределах 0..10, то делим значение координаты на 10 до тех пор пока оно не войдёт в этот диапазон, ну и соответственно округляем.

И теперь какие бы ни были у нас координаты они всё время будут представляться числами от 0 до 10 в сетке размером 12х12.

Всё гениальное - просто!

Я не предусмотрел, если разрыв между координатами будет большой например 100 и 1000, всё равно это будет представляться как 1 и то и другое... И не соблюдаются положения углов...

Последний раз редактировалось Arkuz; 12.02.2011 в 14:45.
Arkuz вне форума Ответить с цитированием
Старый 12.02.2011, 12:00   #9
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию


самую большую линию зделаи на весь графиц, а те что по меньше умен;шаи относитеьно большои линии

P.S. знаю что художник из меня некудышныи)
Изображения
Тип файла: jpg Grafic.jpg (10.1 Кб, 164 просмотров)
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 12.02.2011, 14:47   #10
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Цитата:
самую большую линию зделаи на весь графиц, а те что по меньше умен;шаи относитеьно большои линии
Я делал так, представлял сетку по самой большой координате. Если я правильно понял вы предлагаете Всё тоже самое, но только не относительно самой большой точка, а именно линии, так?
Arkuz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Canvas, код готов. Пропорции. Arkuz Общие вопросы Delphi 6 28.01.2011 13:34
Вставка картинки реальных размеров или хотябы в пропорции Mbus Microsoft Office Excel 4 02.12.2008 09:55