Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Private void GraphicButton_Click(object sender, EventArgs e)




{

//Начало координат графика

intx0 = 15;                          

int y0 = (int)(pictureBox1.Height * 0.85);

//Масштабпооси Х

intMx = pictureBox1.Width - 2 * x0;

//Масштаб по оси Y

intMy = -y0 + 10;

//Число точек графика            

int M = (int)PointsNumericUpDown.Value;

//Созданиеграфическогообъекта

Graphics G = pictureBox1.CreateGraphics();

//Очистка PictureBox1

G.Clear(Color.White);

             

//Описание и создание массива точек       

Point[] p = new Point[M];

//Цикл по числу точек графика

for (intn = 0; n<M; n++)             

{

   //Физическиекоординаты

double x = (double)n / M;                     

doubley = f(x);

   //Экранные координаты

int xi = (int)(x0 + Mx * x);         

intyi = (int)(y0 + My * y);

   //заносим в массив вычисленные значения координат

p[n] = new Point(xi, yi);

}

//коэффициентупругостиграфика

floattensition = (float)TensitionNumericUpDown.Value;

//рисованиеграфика

G.DrawCurve(Pens.Blue, p, tensition);

//Рисованиеоси Х

G.DrawLine(Pens.Black, x0, y0, x0 + Mx, y0);

//Рисованиеоси Y

G.DrawLine(Pens.Black, x0, y0, x0, y0 + My);

//Разметка оси Х

for (intn = 0; n<= 10; n++)                   

{

   //физическая координата штриха

doublex = n / 10.0;

   //экранная координата штриха

intxi = (int)(x0 + Mx * x);

   //Наносим штрих

G.DrawLine(Pens.Black, xi, y0, xi, y0 + 4);

//Наносимчисло

G.DrawString(x.ToString(), font, brush, xi - 9, y0 + 4);    

}

}

 

После создания данного обработчика при нажатии на кнопку «Нарисовать график» в компоненте PictureBox отображается график функции. Однако, если окно программы перекрыть другим окном или перетащить его (или только часть окна с графиком) за пределы экрана, а затем вернуть назад, то рисунок (или его часть) исчезнет. Происходит это из-за того, что каждый раз при появлении Windows-окна на экране его необходимо перерисовывать. Перерисовка самой формы и компонентов (кнопок, флажков и т.д.) производится автоматически операционной системой, а перерисовка всей выводимой в окне графики должна производиться программистом.

Если форма или какой-то компонент поврежден, генерируется событие Paint, которое и нужно обрабатывать для перерисовки. Сгенерировать событие Paint вручную можно с помощью метода Invalidate().

Таким образом, для данного приложения весь код рисования нужно перенести из обработчика щелчка кнопки «Нарисовать график» вобработчик события Paint компонента pictureBox1. При этом строка

GraphicsG = pictureBox1.CreateGraphics();

заменяется на

GraphicsG = e.Graphics;

т.е. графический объект для рисования мы получаем из параметра обработчика.

Обработчик кнопки «Нарисовать график» теперь будет содержать всего одну строчку – принудительный вызов перерисовки графической панели.

Private void GraphicButton_Click(object sender, EventArgs e)

{

pictureBox1.Invalidate();

}

 

Теперь график будет выведен в панели постоянно: при запуске программы, при перекрытии окна, при нажатии кнопки (с новыми параметрами).

Варианты заданий для самостоятельной работы

Построить график функции, вывести, разметить и подписать оси координат (обе!). Предусмотреть возможность установки количества точек и коэффициента упругости графика, а также возможность выбора шрифта с помощью стандартного диалогового окна. Подобрать параметры осей координат, обеспечивающие наглядность (для этого сначала можно построить график в Excel, чтобы оценить его параметры).

1. y=                      при 0,4 ≤ x ≤ 6.

2. y=             при 0 ≤ x ≤ 1.

3. y=        при 1 ≤ x ≤ 3.

4. y=              при –1 ≤ x ≤ 1.

5. y=   при –0,5 ≤ x ≤ 4,5.

6. y=      при –2 ≤ x ≤ 8.

7. y=                     при 0,05 ≤ x ≤ 0,55.

8. y=       при –1≤ x ≤ 1.

9. y=                    при 0,2 ≤ x ≤ 2,2.

10. y=        при 2 ≤ x ≤ 12.

11. y=        при 0 ≤ x ≤ 3.

12. y=                          при –2,3 ≤ x ≤ –1,8.

13. y=                при 2,4 ≤ x ≤ 3,4.

14. y=           при –2 ≤ x ≤ 1.

15. y=     при 1,2 ≤ x ≤ 2,2.

16. y=                     при 0,4 ≤ x ≤ 4.

17. y=             при 0 ≤ x ≤ 2,5.

18. y=        при 0 ≤ x ≤ 4.

19. y=               при –2 ≤ x ≤ 1,6.

20. y=   при 0 ≤ x ≤ 3.

21. y=        при 2 ≤ x ≤ 10.

22. y=                    при 0,2 ≤ x ≤ 0,5.

23. y=        при 2 ≤ x ≤ 4.

24. y=                    при 0,5 ≤ x ≤ 2,5.

25. y=        при 0 ≤ x ≤ 4.

26. y=        при 0,5 ≤ x ≤ 2,5.

27. y=                           при –2 ≤ x ≤ 1.

28. y=                  при 1,4 ≤ x ≤ 1,8.

29. y=           при –1 ≤ x ≤ 2.

30. y=     при 0,2 ≤ x ≤ 2,2.

 










Последнее изменение этой страницы: 2018-06-01; просмотров: 202.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...