0 / 0 / 1
Регистрация: 08.04.2012
Сообщений: 15

График кривой на PictureBox

15.07.2012, 19:50. Показов 3364. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите!!!! не могу разобраться! когда рисуется график кривой на pictureBox из множества точек,то почемуто ресуется линия между первой и последней точкой...как это исправить???

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
private: System::Void btn_Calc_Click(System::Object^  sender, System::EventArgs^  e) 
         {
              for (double i=0; i<listBox1->Items->Count;i++)
              {
                 pointsWorld[i].X = Convert::ToDouble(listBox1->Items[i]);
                 pointsWorld[i].Y = Convert::ToDouble(listBox2->Items[i]);
              }
 
                 //dg1->Rows->Add(i+1, pointsWorld[i].X, pointsWorld[i].Y);
 
                 maxXScreenArea = picBox1->Width;
                 maxYScreenArea = picBox1->Height;
 
             minXWorld = pointsWorld[0].X;
             minYWorld = pointsWorld[0].Y;
             maxXWorld = pointsWorld[1].X;
             maxYWorld = pointsWorld[1].Y;
 
             for(double i =1;i<listBox1->Items->Count;i++)
             {
                 if(pointsWorld[i].X <minXWorld)
                     minXWorld = pointsWorld[i].X;
                 if(pointsWorld[i].Y <minYWorld)
                     minYWorld = pointsWorld[i].Y;
                 if(pointsWorld[i].X >maxXWorld)
                     maxXWorld = pointsWorld[i].X;
                 if(pointsWorld[i].Y >maxYWorld)
                     maxYWorld = pointsWorld[i].Y;
             }
                     //dg1->Rows->Add(minXWorld,minYWorld,maxXWorld,maxYWorld);
                    for(double i =0; i< listBox1->Items->Count; i ++)
                    {
                    pointsScreen[i].X = (pointsWorld[i].X-minXWorld)*maxXScreenArea/(maxXWorld - minXWorld);
                    pointsScreen[i].Y = maxYScreenArea - (pointsWorld[i].Y - minYWorld)*maxYScreenArea/(maxYWorld - minYWorld);
 
                    dg1->Rows->Add(i+1,pointsScreen[i].X,pointsScreen[i].Y);
                    }
             
              }
 
 
 
private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) 
         {
             picBoxArea->DrawLines(Pens::Black,pointsScreen);
         }
Миниатюры
График кривой на PictureBox  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.07.2012, 19:50
Ответы с готовыми решениями:

График через PictureBox
Условия задачи: 1. Построить график функции y=cos(sqrt(x)). 2. График должен отображаться на участке с шагом 0,2. 3. Использовать...

Не получается построить график в PictureBox
Народ здрасьте!! Может кто подскажет? Пытаюсь нарисовать график в PictureBox, и проблема в том, что не могу обратиться к его элементам из...

Сделать так чтобы график имел координатнаую сетку, и график был в виде точек, а не кривой
сделать так чтобы была координатная сетка, и график был в виде точек, а не кривой {$R-} uses graph; function F(x:real):real; begin ...

8
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
16.07.2012, 00:56
sopranis, лишняя полоса рисуется из-за того что вы
создаете лишнюю точку в массиве pointsScreen

Для проверки сделайте массив размером ( SIZE - 1 )
1
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,561
16.07.2012, 08:08
чем рисуете? если DrawPolygon , то он замыкается
1
0 / 0 / 1
Регистрация: 08.04.2012
Сообщений: 15
16.07.2012, 23:28  [ТС]
Я менял size-1 ничкго не получается результат тотже!! помогите плиз!! хочеться понял в чём проблема !! вот solution мой
Вложения
Тип файла: rar rabota kursovaja.rar (898.4 Кб, 28 просмотров)
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
16.07.2012, 23:41
sopranis, сколько должно быть точек ?

Добавлено через 35 секунд
на графике ?

Добавлено через 1 минуту
Рисуете 10, а задаете 20000!!!
1
0 / 0 / 1
Регистрация: 08.04.2012
Сообщений: 15
16.07.2012, 23:43  [ТС]
Рисую DrawLines!!!
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
16.07.2012, 23:43
pointsCount тогда делайте равным 10
1
0 / 0 / 1
Регистрация: 08.04.2012
Сообщений: 15
17.07.2012, 01:11  [ТС]
точек столько ,скоко я задам значений, тоесть интервал от A до B!! стоко и будет точек!!

Добавлено через 1 минуту
Тема закрыта!!!!! Благодарю вас!! просто мозг перикепел!! Я новичёк в этом деле!!!Спасибо!!

Добавлено через 1 час 22 минуты
Вот теперь я столкнулся с проблеммой!! Как сделать так чтобы количество pointsCount добавлялось автоматически??? помогите плиз!!!
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
17.07.2012, 15:14
Цитата Сообщение от sopranis Посмотреть сообщение
Как сделать так чтобы количество pointsCount добавлялось автоматически???
Если вас правильно понял вам нужно создавать массив точек
в соответствии с размером получаемого с текстбоксов
тогда так:

пишем функцию в которой создаем массивы

C++
1
2
3
4
5
6
7
8
9
        public:
 
            void CreateArrays ( const int size )
 
            {
                pointsWorld  = gcnew array <Point>( size );
                pointsScreen = gcnew array <Point>( size );
        
            }
где SIZE размер массива - получаем с текстбоксов

Вызываем функцию в обработчике так :
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
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
         {
            .........................................................
 
..........................................................................
 
             if (radioButton2->Checked==true)
                 {
                 if(textBox2->Text!="" && textBox3->Text!="" && textBox4->Text!="")
                    {
                     double xmin=0,xmax=0,y=0,step=0;
                     double nCount=0;
                     step=Convert::ToDouble(textBox4->Text);
                     xmin=Convert::ToDouble(textBox2->Text);
                     xmax=Convert::ToDouble(textBox3->Text);
 
 
/////////////////////////////////////////////////////////////////////////////////
                                         
                 CreateArrays ( xmax - xmin + 1 );  //  ВЫЗОВ ФУНКЦИИ
 
///////////////////////////////////////////////////////////////////////////////////////////
                    
                     for(double i=xmin;i<=xmax;i=i+step)
                     {
                ........................................
...............................................................................
         }
Добавлено через 5 минут
Ну естественно из конструктора формы убрать строки
C++
1
2
3
       double pointsCount = 20000;
    pointsWorld = gcnew array<Point>(pointsCount);
    pointsScreen = gcnew array<PointF>(pointsCount);
Добавлено через 12 часов 17 минут

Не по теме:

Сегодня sopranis, посмотрел ваш код на свежую голову , да работы вам ещё ОЙ-ОЙ-ОЙ сколько много

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.07.2012, 15:14
Помогаю со студенческими работами здесь

График кривой
Здраствуйте! Помогите построить кривую x^2+y^2=v^2((x-l*cos(a))^2+(y-l*sin(a))^2)^2, 0&lt;a&lt;pi,v и l-константы. Проблема состоит в том, что...

Построить график кривой
Помогите построить эту гиперболу. Мучаюсь с маткадом, но что-то он не хочет строить L: 9x^2-16y^2+90x+32y-367=0

Построить график кривой
Уравнение кривой имеет вид x/16+(y^2)/9=1 Определить, что это за кривая, изобразить график кривой.

Построить график кривой
Здраствуйте! Помогите построить кривую x^2+y^2=v^2((x-l*cos(a))^2+(y-l*sin(a))^2)^2, 0&lt;a&lt;pi,v и l-константы. Проблема состоит в том, что...

Построить график интегральной кривой
Доброго времени суток. Прошу помощь с Simulink. 1. Построить график интегральной кривой у(х) функции заданной диф. уравнением...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru