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

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

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

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

У меня проблема вот с этим: gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);. Вылезает ошибка: CS1061 "object" не содержит определения "GL_COLOR_BUFFER_BIT", и не удалось найти доступный метод расширения "GL_COLOR_BUFFER_BIT",...
Большое спасибо. Единственный код который прошел без каких либо ошибок. Ура!!!
Скажите пожалуйста, подскажите алгоритм по которому по заданным точкам можно определить тип многогранника, скажем это куб или прямоугольный параллелепипед. Нашел теорию по этим фигурам: https://www.mat... https://www.mat... Акцентировать внимание...
Всем у кого не работает. файл wizard.script Ещё одно упоминание Glut32 в строке "if (!VerifyLibFile(dir_nomacro_lib, _T("glut32"), _T("GLUT's"))) return false;" меняем на "if (!VerifyLibFile(dir_nomacro_lib, _T("freeglut"), _T("GLUT's"))) return...
Не получается, емаё

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

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

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 WindowsFormsApplication2
{
 
    public partial class Form1 : Form
    {
        private Bitmap bitmap;                                           //инициализируем битмэп
        private Graphics graphix;                                     //инициализируем графику
        SolidBrush BG = new SolidBrush(Color.FromArgb(65 ,105 ,225));           //задаем цвет фона
        SolidBrush rect1 = new SolidBrush(Color.FromArgb(240 ,255 ,240));           //задаем цвет квадратов
        SolidBrush rect2 = new SolidBrush(Color.Black);            
 
        Pen PenRect = new Pen(Color.Black, 3);                                  //цвет контура кругов и центрального
                                                                                //центрального квадрата           
        float i;                          //переменная для цикла
        float angle;                        //угол
        int sr, se, cnt;                    //радиусы кругов и квадрата, счетчик
        float k = 0;                        //отвечает за перемещение черных прямоугольников
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void DRAW()
        {
            bitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);                      //создаем битмап
            graphix = Graphics.FromImage(bitmap);                                            //создаем графику
            graphix.FillRectangle(BG, 0, 0, pictureBox1.Width, pictureBox1.Height);                    //закрашиваем фон
            graphix.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;                     //сглаживание
            graphix.TranslateTransform((float)pictureBox1.Width / 2, (float)pictureBox1.Height / 2);       //перемещаем координаты в центр 
 
            graphix.RotateTransform(angle);                                                                    //поворачиваем на заданный угол
 
            graphix.DrawRectangle(PenRect, -50 - sr, -50 - sr, 100 + sr * 2, 100 + sr * 2); //рисуем квадрат
            graphix.DrawEllipse(PenRect, -se, -se, se * 2, se * 2);               //рисуем круги
            graphix.DrawEllipse(PenRect, se * 2,   se * 2,  se * 2, se * 2);
            graphix.DrawEllipse(PenRect, -se * 4, -se * 4, se * 2, se * 2);
            graphix.DrawEllipse(PenRect, se * 2, -se * 4, se * 2, se * 2);
            graphix.DrawEllipse(PenRect, -se * 4, se * 2, se * 2, se * 2);
 
            for (i = 0; i < 17; i++)
            {
                graphix.FillRectangle(rect1, 60 + 15 * i, -50 + i * (float)2.5, 10, 100 - i * 5);     //прямоугольники справа          
            }
 
            for (i = 0; i < 17; i++)
            {
                graphix.FillRectangle(rect1, -50 + i * (float)2.5, -70 - 15 * i, 100 - i * 5, 10);        //верхние прямоугольники
            }
 
            for (i = 0; i < 17; i++)
            {
                graphix.FillRectangle(rect1, -50 + i * (float)2.5, 60 + 15 * i, 100 - i * 5, 10);      //нижние прямоугольники
            }
 
            for (i = 0; i < 17; i++)
            {
                graphix.FillRectangle(rect1, -70 - 15 * i, -50 + i * (float)2.5, 10, 100 - i * 5);       //прямоугольники слева 
            }
 
            graphix.FillRectangle(rect2, 60 + 15 * k, - 50 + k * (float)2.5, 10, 100 - k * 5);          //черные двигающиеся
            graphix.FillRectangle(rect2, -50 + k * (float)2.5, -70 - 15 * k, 100 - k * 5, 10);          //прямоугольники
            graphix.FillRectangle(rect2, -50 + k * (float)2.5, 60 + 15 * k, 100 - k * 5, 10);
            graphix.FillRectangle(rect2, -70 - 15 * k, -50 + k * (float)2.5, 10, 100 - k * 5);
 
            pictureBox1.BackgroundImage = bitmap;// отображаем Bitmap на pictureBox
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            DRAW();
            angle += (float)1;              //увеличиваем угол
            cnt++;                          //увеличиваем счетчик
 
            if(cnt < 150)               //пока счетчик меньше 150
            {
                sr--;                       //уменьшаем радиус центрального квадрата
                k += (float)0.1;            //перемещаем черные прямоугольники 
            }   
 
            if(cnt > 50 && cnt < 100)       //счетчик больше 50 и меньше 100
            {
                se++;                       //перемещаем черные круги от центра  
            }
 
            if(cnt > 100 && cnt < 150)          //счетчик больше 100 и меньше 150
            {
                se--;                           //перемещаем круги в центр
            }
 
            if (cnt > 150)                      //счетчик больше 150
            {
                sr++;                           //увеличиваем квадрат
                k -= (float)0.1;                //перемещаем черные прямоугольники обратно
            }
 
            if(cnt > 150 && cnt < 200)          //счетчик больше 150 и меньше 200
            {
                se++;                           //перемещаем круги от центра 
            }
 
            if(cnt > 200 && cnt < 250)          //счетчик больше 200 меньше 250
            {
                se--;                           //перемещаем круги в центр       
            }
 
            if(cnt == 300)                  //счетчик равен 300 обнуляем переменные
            {
                sr = 0;
                se = 0;
                cnt = 0;
                k = 0;
            }
        }
    }
}

Прикрепленный файлРазмер
Volkov_Ellipses.rar49.74 кб