Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.70
kingskeeper
7 / 7 / 1
Регистрация: 08.11.2010
Сообщений: 26
#1

Оси координат - C++

19.11.2010, 06:24. Просмотров 2888. Ответов 4
Метки нет (Все метки)

Привет всем. Продолжаю я мучать графику на Визуале С++.
Задание состоит в следующем: разработать программу для построения графика функции с осями координат по заданным во внешнем файле точкам.
Считывает из файла моя прога нормально, выводит на экран значения в ListBox, затем рисует график по точкам с помощью LineTo.
НО!
Не знаю,как задать и нарисовать оси координат. Пробовала несколько вариантов,но то ли у меня руки кривые,то ли варианты кривые были.
Подскажите,пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2010, 06:24     Оси координат
Посмотрите здесь:

На PictureBox нарисовать оси координат X и Y - C++
Приветствую! Нужно на pictureBox нарисовать оси координат x и y ---- Пытался сделать сам, но у меня все линии в разные стороны ))...

Как будет себя вести на оси координат домик по формуле y=1+z^2 - C++
помогите с кодом проги которая будет расчитывать как будет вести себя домик на оси координат по формуле y= 1+z^2(комплексная форма)

Угол отрезка к оси OY - C++
Добрый вечер, нужно имея первую точку (устройство) и вторую точку (цель) найти градусное соответсвие поворота 0-360. Что-то голова не...

Ядрышко ОСи пишу - C++
хм.Изучаю си два месяца.Хочу написать ОС.Простую, командную строку.И хочу писать ядро.Сложно ли это?Допустим епросто хелловорлд и cin.Как...

Определить, параллельна ли прямая оси Y - C++
Здравствуйте. Подскажите, пожалуйста, как в данном конкретном случае правильно определить, параллельна ли прямая оси Y (то есть как...

Пересечение отрезков числовой оси - C++
Дано 2*N действительных чисел . Они определяют N интервалов числовой оси 1, a2], 3, a4], ..., 2*N-1, a2*N]. Имеют ли все данные...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kingskeeper
7 / 7 / 1
Регистрация: 08.11.2010
Сообщений: 26
23.11.2010, 20:38  [ТС]     Оси координат #2
Вот мой OnPaint():
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
void Prog::OnPaint() 
{
if (IsIconic())
    {
        CPaintDC dc(this); // device context for painting
 
        SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
 
        // Center icon in client rectangle
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
        GetClientRect(&rect);
        int x = (rect.Width() - cxIcon + 1) / 2;
        int y = (rect.Height()-1 - cyIcon + 1) / 2;
 
        // Draw the icon
        dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
        CDialog::OnPaint();
 
        if(mCanDraw)
        {
            CClientDC dc(GetDlgItem(IDC_STATIC1)); 
            //определение объекта класса CClientDC в элементе диалога  "Static text"
            CRect lRect;  // Объявление объекта класса CRect
            CWnd *pWnd = dc.GetWindow();
            //определение указателя на окно, которое занимает элемент диалога "Static text"
            pWnd->GetClientRect( &lRect ); 
    static const int mX0 = 368;
    static const int mY0 = 276;
            double lDX = (double)lRect.Width() / (double)mX0;
            double lDY = (double)lRect.Height()  / (double)mY0;
 
            CPen Pen(PS_SOLID, 2, RGB(0,0,255)); // инициализация пера
            CPen* lPen = dc.SelectObject(&Pen); // выбор пера
 
            dc.Ellipse(k1 * lDX, p1 * lDY, m1 * lDX, n1 * lDY);
            dc.Ellipse(k2 * lDX, p2 * lDY, m2 * lDX, n2 * lDY);
            dc.Arc(k0 * lDX, p0 * lDY, m0 * lDX, n0 * lDY, a * lDX, b * lDY, c * lDX, d * lDY);
 
            dc.SelectObject(lPen);
        }
    }
 
}
Мне предложили,что точку надо ставить в координате (x,height-y),а не (x,y).
Подскажите,где тут надо переправить?
Не доходит до меня.По-моему это вообще не панацея. Так как надо,чтобы начало координат было в нижнем левом углу,а не в верхнем, как по умолчанию.И соответственно и график чтобы строился от заданного начала координат и координатных осей.По-моему,если сделать так,как мне предложили,то хотя и условный перенос начала координат и произойдет,но график будет строится все равно исходя из стандартных осей координат
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
24.11.2010, 07:14     Оси координат #3
Цитата Сообщение от kingskeeper Посмотреть сообщение
Мне предложили,что точку надо ставить в координате (x,height-y),а не (x,y).
Ну похоже вам так и надо сделать. Не силён в Visual Studio, вот пример на билдере с испольованием VCL:
C++
1
2
3
4
5
6
7
8
9
10
// точки, задающие окружность
int x1 = 10;
int x2 = 100;
int y1 = 10;
int y2 = 100;
// высота
int heigth = Form1->ClientHeight;
 
Form1->Canvas->Ellipse(x1,y1,x2,y2);  // начало координат вверху
Form1->Canvas->Ellipse(x1,heigth - y1,x2,heigth - y2);  // начало координат внизу
Отображаются две окружности - первая как в вашем примере, вторая - с перевёрнутой осью y. У вас это будет выглядеть наверное как-то так:
C++
1
dc.Ellipse(k1 * lDX, (lRect.Height()-p1) * lDY, m1 * lDX, (lRect.Height()-n1) * lDY)
kingskeeper
7 / 7 / 1
Регистрация: 08.11.2010
Сообщений: 26
24.11.2010, 13:53  [ТС]     Оси координат #4
Теоретически-да.Но если сделать вот так вот (а я уже пробовала и до вашего совета),то вместо картинки в первом вложении,получим картинку во втором вложении.
То есть,во-первых,неправильно рисуется дуга,а во-вторых,возникают проблемы с рисунком во время сворачивания-разворачивания окна.Т.е. при сворачивании рисунок сдвигается вниз (а должен оставаться на месте). При разворачивании,рисунок должен "разворачиваться" вместе с окном.Но здесь он просто исчезает. То ли тут надо как-то доработать,то ли вариант неверный выходит
Пытаюсь еще поиграться с режимами отображения, но пока не очень успешно
Миниатюры
Оси координат   Оси координат  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2010, 15:46     Оси координат
Еще ссылки по теме:

Поворот вокруг произвольной оси - C++
Здравствуйте, пытаюсь реализовать функции поворота базиса вокруг произвольной оси, но почему-то немного не корректно работает, я не понимаю...

Вращение прямоугольника вокруг оси - C++
Программа должна вращать прямоугольник с заданными параметрами длины и ширины, вокруг оси. Общий алгоритм приведен ниже. Вопрос: как...

Разметка оси в соответствии с диапазоном значений - C++
Здравствуйте, уважаемые специалисты. У меня такая задача: Написать функцию которая возвращает массив - это засечки на оси. Входные...

Отразить матрицу относительно горизонтальной оси - C++
Необходимо написать программу, в которой матрица 5х5 симетрично отображается. Пример: 1 2 3 4 Результат: 3 4 1 2

Вращение объекта вокруг оси. Матрицы поворота. - C++
добрый день, нужно сделать программу вращение куба вокруг оси z. Применил матрицу поворота к точкам и они далеко отошли От заданных. Не...

Нарисовать треугольник, вращающийся вокруг своей оси - C++
Помогите ! Нужно нарисовать равносторонний треугольник и сделать так, чтобы он крутился вокруг своей оси


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
kingskeeper
7 / 7 / 1
Регистрация: 08.11.2010
Сообщений: 26
27.11.2010, 15:46  [ТС]     Оси координат #5
Проблема в том,что если работать с Height() то перестает работать по-нормальному сворачивание и разворачивание окон
Yandex
Объявления
27.11.2010, 15:46     Оси координат
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru