Уроки, алгоритмы, программы, примеры

Вход на сайт

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

dobryj den, popytalas otkryt prikreplionnyj fail ctoby posmotret kak rabotaet, no mne ego ne pokazyvaet vydajet osibku. Pochemu?
Очень интересно! ии сайт крутой жалко что умирает(
У Вас число превысит максимальное число int. Можно использовать в Вашем случае uint, но лучше все переписать на double.
Добавление к программе строки glutReshapeFunc(changeSize); приводит к тому, что треугольник перестаёт совсем отрисовываться.
Выдаёт ошибку glut32.dll не найден! При том, что он лежит в System32! Всё решил) Нужно отправить не в System32, а в System.

Счетчики и рейтинг

Рейтинг@Mail.ru Яндекс.Метрика
Язык программирования: 
C#
Среда программирования: 
Microsoft Visual Studio 2013

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Цветные_треугольники
{
    public partial class Form1 : Form
    {
        Bitmap myBitmap;//объявляем bitmap
        Graphics g;//объявляем графику
 
        SolidBrush bgcol = new SolidBrush(Color.AntiqueWhite);//цвет фона
 
        SolidBrush blue = new SolidBrush(Color.FromArgb(180, 3, 55, 134)); //полупрозрачная синяя заливка
        SolidBrush red = new SolidBrush(Color.FromArgb(180, 134, 3, 10)); //полупрозрачная красная заливка
 
        Pen redPen = new Pen(Color.Red); //красный контур
        Pen bluePen = new Pen(Color.Blue); //синий контур
 
        float xr1, yr1, xr2, yr2, xr3, yr3; // коэффициенты приращения для красного треугольника
        float xb1, yb1, xb2, yb2, xb3, yb3; // коэффициенты приращения для синего треугольника
 
        int cnt;//счетчик
 
        public Form1()
        {
            InitializeComponent(); //инициализация компонентов
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Enabled = true; //при загрузке формы включается таймер
        }
 
 
        private void DrawTriangles()//функция изменения фигуры
        {
            myBitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);//создаем битмап
            Graphics g = Graphics.FromImage(myBitmap);//создаем графику                       
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//добавляем сглаживание
            g.FillRectangle(bgcol, 0, 0, 500, 500);//заливаем фон
 
 
            PointF rA = new PointF(25 + xr1, 100 + yr1); //задаем точки - координаты треугольника с увеличивающимся шагом, который равен x(конечное)-x(начальное)/50
            PointF rB = new PointF(300 + xr2, 50 + yr2);
            PointF rC = new PointF(100 + xr3, 310 + yr3);
 
            PointF bA = new PointF(445 + xb1, 180 + yb1);
            PointF bB = new PointF(330 + xb2, 450 + yb2);
            PointF bC = new PointF(215 + xb3, 275 + yb3);
 
 
            PointF[] RedTriangle = { rA, rB, rC }; //задаем массив из меняющихся координат треугольника
            PointF[] BlueTriangle = { bA, bB, bC };
 
            g.DrawPolygon(redPen, RedTriangle); //рисуем контуры треугольников
            g.DrawPolygon(bluePen, BlueTriangle);
 
            g.FillPolygon(red, RedTriangle); //заливаем их
            g.FillPolygon(blue, BlueTriangle);
 
            pictureBox1.BackgroundImage = myBitmap;// отображаем Bitmap на pictureBox
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            cnt++; //увеличиваем счетчик
 
            if (cnt < 50) //увеличиваем шаг до тех пор, пока значение счетчика не достигнет 50
            {
                xr1 += (float)2.5;
                yr1 += (float)6;
                xr2 += (float)1.6;
                yr2 += (float)2.8;
                xr3 += (float)6.7;
                yr3 += (float)2.5;
 
                xb1 += (float)-8.1;
                yb1 += (float)-2.2;
                xb2 += (float)-1.4;
                yb2 += (float)-7.8;
                xb3 += (float)-1.3;
                yb3 += (float)1.5;
            }
 
 
            if (cnt >= 50) //как только cnt >= 50 - уменьшаем шаг (т.е. возвращаем треугольники на прежнее место)
            {
                xr1 += (float)-2.5;
                yr1 += (float)-6;
                xr2 += (float)-1.6;
                yr2 += (float)-2.8;
                xr3 += (float)-6.7;
                yr3 += (float)-2.5;
 
                xb1 += (float)8.1;
                yb1 += (float)2.2;
                xb2 += (float)1.4;
                yb2 += (float)7.8;
                xb3 += (float)1.3;
                yb3 += (float)-1.5;
            }
 
            if (cnt == 100) { xr1 = 0; yr1 = 0; xr2 = 0; yr2 = 0; xr3 = 0; yr3 = 0; xb1 = 0; yb1 = 0; xb2 = 0; yb2 = 0; xb3 = 0; yb3 = 0; cnt = 0; } //анимация закончилась, обнуляем счетчик, значения приращения и начинаем сначала
 
            DrawTriangles(); //прорисовываем треугольники
        }
    }
}

Прикрепленный файлРазмер
Gavrilenko_Coloured_Triangles.rar38.29 кб