Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Private void GraphicButton_Click(object sender, EventArgs e) ⇐ ПредыдущаяСтр 4 из 4
{ //Начало координат графика 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 не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |