Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > График


Автор: Kostik88 1.7.2008, 22:54
Здравствуйте.

У меня возникла проблема с графиком, а точнее с его представлением на экране....

у меня даны таблицы данных, по которым я строю график( столбцы x,y )
таблица меняется и соответсвенно таблица тоже....

просто получается что график у меня двигается по оси Х, к примеру Х0=0.....Хn = 9 это в первой таблице, а в следующей уже к примеру, Х0=2.4.....Xn=12.3

Вопрос, как сделать преобразование так чтобы график отображался на всю выводимую область, чтобы было это было связанно с размерами по Х (RECT.right)   ,  за начало координат была точка(X0,Y0) а за кнец (Xn,Yn)? 

Я использовал фцию LineTo(hDC, int((rect.right)*((S ) /(m1)) +10 ),  .........); где m1 - максимум по Х.

для наглядности выкладываю фотку.

Буду очень признателен за любую помощь!

Автор: Kostik88 1.7.2008, 23:31
Забыл сказать S - это значение столбца Х

Автор: deniska 2.7.2008, 07:11
чавойто не понял я. то есть исходя из картинки тебе надо чтоб зеленый график рисовался их правого нижнего угла области для рисования? и растягивался на всю эту область? ну то чистая математика выходит... 
вот и тебя Х0=2.4 ХН=12.3 тогда координата Х для LineTo будет примерно так: Х= (Хтек - Х0)*к, где к - коэффициент для пересчета физической величины в экранную  - к =( длина области для рисования )/(ХН-Х0). вроде так, если правильно понял

Автор: Kostik88 4.7.2008, 22:48
Спасибо deniska, разобрался... чегото реально затупил=)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)