![]() Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
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= 2. y= 3. y= 4. y= 5. y= 6. y= 7. y= 8. y= 9. y= 10. y= 11. y= 12. y= 13. y= 14. y= 15. y= 16. y= 17. y= 18. y= 19. y= 20. y= 21. y= 22. y= 23. y= 24. y= 25. y= 26. y= 27. y= 28. y= 29. y= 30. y=
|
||
Последнее изменение этой страницы: 2018-06-01; просмотров: 258. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |