Другие языки программирования и технологии
народ как смещать начало координат при рисовании графика в delphi, компонент paintbox...
хотелось бы чтобы в тот момент когда график доходит до края области, происходило смещение начала координат и т.о. мы бы всегда видели построение графика
Доброго времени суток.
Давайте расскажу принцип рисования графика. допустим, имеется набор значений в диапазоне аргументов (xMin..xMax) и функций, соответственно, (yMin..yMax), во-первых. И, во-вторых, область рисования имеет вид прямоугольника с координатами x1,y1,x2,y2
Сначала требуется определить сколько пикселей приходится на единицу аргумента и функции, т. е. найти "масштабные" коэффициенты.
xRel := (x2 - x1)/(xMax - xMin);
yRel := (y2 - y1)/(yMax - yMin);
А теперь можно показать любое значение, попадающее в диапазон аргументов и функций, вычислив координаты пиксела
x := Round((Arg - xMin) * xRel);
y := Round((-Func + yMax) * yRel);
Разница со знаками обусловлена тем, что координаты экрана для аргумента увеличивается слева на право, а для функции сверху вниз. Нам же хочется "нормальное" представление значения функции - что больше, то выше
Отсюда вы можете перейти к решению своей задачи. Вариантов несколько.
1. Текущее значение Arg приближается к xMax. Вы можете добавить к xMin, xMax константу, сдвинув тем самым график влево. При этом он скроется за левой границей пайнтбокса и рисование продолжится. Будет чем-то напоминать отображение пульса на медицинских приборах.
2. При приближении текущего значения аргумента к xMax, вы начинаете пересчитывать масштабные коэффициенты в соответствии с новым значением xMax. График при этом будет отображаться весь, но как бы "сжиматься" по оси Х
3. При приближении текущего значения аргумента к (xMax - xMin) / 2 вы осуществляете действия п. 1 При этом график будет рисоваться в ценре пайнтбокса, уходя за левую границу.
Судя по вашим словам, первый вариант вас должен устроить.
Удачи!
Давайте расскажу принцип рисования графика. допустим, имеется набор значений в диапазоне аргументов (xMin..xMax) и функций, соответственно, (yMin..yMax), во-первых. И, во-вторых, область рисования имеет вид прямоугольника с координатами x1,y1,x2,y2
Сначала требуется определить сколько пикселей приходится на единицу аргумента и функции, т. е. найти "масштабные" коэффициенты.
xRel := (x2 - x1)/(xMax - xMin);
yRel := (y2 - y1)/(yMax - yMin);
А теперь можно показать любое значение, попадающее в диапазон аргументов и функций, вычислив координаты пиксела
x := Round((Arg - xMin) * xRel);
y := Round((-Func + yMax) * yRel);
Разница со знаками обусловлена тем, что координаты экрана для аргумента увеличивается слева на право, а для функции сверху вниз. Нам же хочется "нормальное" представление значения функции - что больше, то выше
Отсюда вы можете перейти к решению своей задачи. Вариантов несколько.
1. Текущее значение Arg приближается к xMax. Вы можете добавить к xMin, xMax константу, сдвинув тем самым график влево. При этом он скроется за левой границей пайнтбокса и рисование продолжится. Будет чем-то напоминать отображение пульса на медицинских приборах.
2. При приближении текущего значения аргумента к xMax, вы начинаете пересчитывать масштабные коэффициенты в соответствии с новым значением xMax. График при этом будет отображаться весь, но как бы "сжиматься" по оси Х
3. При приближении текущего значения аргумента к (xMax - xMin) / 2 вы осуществляете действия п. 1 При этом график будет рисоваться в ценре пайнтбокса, уходя за левую границу.
Судя по вашим словам, первый вариант вас должен устроить.
Удачи!
Похожие вопросы
- C++ Вывести сообщение о том, какая из точек ближе к началу координат, и все соответствующие расстояния.
- Как по координатам трех точек треугольника определить - начало координат находится внутри него или за его пределами?
- Паскаль. СРОЧНО ;( Выяснить принадлежит ли точка (x;y) кругу единичного радиуса с центром в начале координат
- Delphi:Прочитал, что если при динамическом создании компонента если указать Name объекта, то в последующем можно ->
- график в С++ при помощи canvas и paintbox
- Как загрузить базу данных *.xls в компонент TListView (Delphi)?
- Согласны с этим - Глубинные причины ненависти к Delphi/Pascal ?
- Народ, кто разбирается в Delphi?
- Народ почему я люблю Delphi? а не Visual Studio
- Какие приложения можно создать на Delphi? Я начал изучать Delphi, что можно создать и взять это как стремление