График в PictureBox

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
KPEATOP
Бывалый
Бывалый
 
Сообщения: 291
Зарегистрирован: 02.12.2002 (Пн) 16:33
Откуда: Russia

График в PictureBox

Сообщение KPEATOP » 12.05.2015 (Вт) 9:33

Подскажите пожалуйста кто знает как при рисовании графика в PictureBox корректно рисовать метки на осях X и Y ? Я имею ввиду вот что: например, если строить график в MSChart, то там автоматически метки осей и максимумы (минимумы) осей проставляются корректно, т.е. целые числа. Если самому рисовать в PictureBox, то приходиться разбивать ось, например на 5 делений, чтоб шкала была. Но метки получаются дробные числа. Это не очень корректно. Хотелось бы как в Excel автоматически корректную шкалу. Форматирование конечно потом можно сделать для пользователя, но сначала по умолчанию тоже надо как то сделать шкалу. Если Вы поняли про что я говорю, то может подскажите алгоритм построения шкалы осей и меток.
Вечность пахнет нефтью

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: График в PictureBox

Сообщение alibek » 12.05.2015 (Вт) 9:55

Нарисуй график на не разлинованной бумаге, без использования линейки.
А затем то же самое повтори в программе.
Lasciate ogni speranza, voi ch'entrate.

KPEATOP
Бывалый
Бывалый
 
Сообщения: 291
Зарегистрирован: 02.12.2002 (Пн) 16:33
Откуда: Russia

Re: График в PictureBox

Сообщение KPEATOP » 12.05.2015 (Вт) 10:06

alibek писал(а):Нарисуй график на не разлинованной бумаге, без использования линейки.
А затем то же самое повтори в программе.

Не совсем понял, если честно
Вечность пахнет нефтью

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: График в PictureBox

Сообщение alibek » 12.05.2015 (Вт) 10:17

Когда ты на бумаге воспроизведешь действия, необходимые для разметки осей, то и реализовать их программно проблемы не составит.
У тебя есть отрезок длиною L пикселов. Тебе нужно разбить его на целое число частей N, шаг меток будет S=L/N.
Длина отрезка — это максимально значение твоей функции M. Масштаб будет Z=M/L, шаг метки в масштабе будет M/S.
Если ты хочешь, чтобы шаги были целыми числами, значит округли S до целого, а затем получи новое L=S*N и вычисли новый масштаб Z=M/L.
Lasciate ogni speranza, voi ch'entrate.

KPEATOP
Бывалый
Бывалый
 
Сообщения: 291
Зарегистрирован: 02.12.2002 (Пн) 16:33
Откуда: Russia

Re: График в PictureBox

Сообщение KPEATOP » 12.05.2015 (Вт) 10:27

Надо попробовать. А после округления шаг меток будет одинаковый или все таки будет различаться?
Вечность пахнет нефтью

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: График в PictureBox

Сообщение iGrok » 13.05.2015 (Ср) 2:43

KPEATOP писал(а):А после округления шаг меток будет одинаковый или все таки будет различаться?

А ты точно прочитал и понял алгоритм? С чего бы шагу вообще различаться?
label:
cli
jmp label

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: График в PictureBox

Сообщение Mikle » 13.05.2015 (Ср) 6:37

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

KPEATOP
Бывалый
Бывалый
 
Сообщения: 291
Зарегистрирован: 02.12.2002 (Пн) 16:33
Откуда: Russia

Re: График в PictureBox

Сообщение KPEATOP » 21.08.2015 (Пт) 11:23

alibek писал(а):Когда ты на бумаге воспроизведешь действия, необходимые для разметки осей, то и реализовать их программно проблемы не составит.
У тебя есть отрезок длиною L пикселов. Тебе нужно разбить его на целое число частей N, шаг меток будет S=L/N.
Длина отрезка — это максимально значение твоей функции M. Масштаб будет Z=M/L, шаг метки в масштабе будет M/S.
Если ты хочешь, чтобы шаги были целыми числами, значит округли S до целого, а затем получи новое L=S*N и вычисли новый масштаб Z=M/L.


Я наверно не совсем понял алгоритм. У меня ось X от 0 до 7 (это значит М=7), отрезок L=467 пикселей (длина оси X в пикселях), я хочу разбить ось X на три части (N=3), т.е. поставить 2 метки на оси. Нахожу шаг меток будет S=L/N, округляю S, получаю новое L=S*N, вычисляю новый масштаб Z=M/L. Дальше не понимаю что мне делать с новым масштабом Z. Все таки как мне 2 метки поставить на ось ???
Вечность пахнет нефтью


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, SemrushBot, Yandex-бот и гости: 38

    TopList