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

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

Построения
на плоскости (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 Community

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 gif
{
    public partial class Form1 : Form
    {
        SolidBrush bgcol = new SolidBrush(Color.White);//цвет фона
        SolidBrush white = new SolidBrush(Color.White); //определяем
        SolidBrush black = new SolidBrush(Color.Black);//цвета для кругов
 
        int sd; //счетчик
        int i1 = 0; //переменные для движения кругов
        int i2 = 0;
        int i3 = 0;
        int i4 = 0;
 
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Start(); //при загрузке формы стартует таймер
        }
        private void DrawEll1(Graphics gr, Bitmap bmp) //определяем функции для четырех промежуточных состояний DrawEll
        {
            gr.FillEllipse(black, 0, 0, 50, 50);
            gr.FillEllipse(white, 50, 0, 50, 50);
            gr.FillEllipse(white, 0, 50, 50, 50);
            gr.FillEllipse(black, 50, 50, 50, 50);
        }
        private void DrawEll2(Graphics gr, Bitmap bmp)
        {
            gr.FillEllipse(white, 0, 0, 50, 50);
            gr.FillEllipse(black, 50, 0, 50, 50);
            gr.FillEllipse(white, 0, 50, 50, 50);
            gr.FillEllipse(black, 50, 50, 50, 50);
        }
        private void DrawEll3(Graphics gr, Bitmap bmp)
        {
            gr.FillEllipse(white, 0, 0, 50, 50);
            gr.FillEllipse(black, 50, 0, 50, 50);
            gr.FillEllipse(black, 0, 50, 50, 50);
            gr.FillEllipse(white, 50, 50, 50, 50);
        }
         private void DrawEll4(Graphics gr, Bitmap bmp) 
        {
            gr.FillEllipse(black, 0, 0, 50, 50);
            gr.FillEllipse(black, 50, 0, 50, 50);
            gr.FillEllipse(white, 0, 50, 50, 50);
            gr.FillEllipse(white, 50, 50, 50, 50);
        }
        private void MoveEll() //функция для движения кругов
        {
            Bitmap b = new Bitmap(100, 100); //создаем битмап
            Graphics g = Graphics.FromImage(b); //создаем графику
            g.FillRectangle(bgcol, 0, 0, 500, 500);//заливаем фон
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//избавляемся от пиксельности по краям
 
            if (sd < 51) //определяем движение кругов при разных значениях счетчика анимации 
            {
                DrawEll1(g, b);
                g.FillEllipse(white, -50 + i1, 0, 50, 50);
                g.FillEllipse(black, i1, 0, 50, 50);
            }
 
            if (sd >= 51 && sd < 65) //по окончании одного из четырех циклов делаем перерыв и рисуем промежуточный расклад кругов
            { DrawEll2(g, b); }
 
            if (sd >= 65 && sd < 116) // определяем движение кругов при разных значениях счетчика анимации 
            {
                DrawEll2(g, b);
                g.FillEllipse(black, 50 - i2, 50, 50, 50);
                g.FillEllipse(white, 100 - i2, 50, 50, 50);
            }
 
            if (sd >= 116 && sd < 130) // по окончании одного из четырех циклов делаем перерыв и рисуем промежуточный расклад кругов
            { DrawEll3(g, b); }
 
            if (sd >= 130 && sd < 181) // определяем движение кругов при разных значениях счетчика анимации 
            {
                DrawEll3(g, b);
                g.FillEllipse(black, 0, 50 - i3, 50, 50);
                g.FillEllipse(white, 0, 100 - i3, 50, 50);
            }
 
            if (sd >= 181 && sd < 195) // по окончании одного из четырех циклов делаем перерыв и рисуем промежуточный расклад кругов
            { DrawEll4(g, b); }
 
            if (sd >= 195 && sd < 246) // определяем движение кругов при разных значениях счетчика анимации 
            {
                DrawEll4(g, b);
                g.FillEllipse(black, 50, 0 + i4, 50, 50);
                g.FillEllipse(white, 50, -50 + i4, 50, 50);
            }
 
            if (sd >= 246) // (2)
            { DrawEll1(g, b); }
 
            pictureBox1.BackgroundImage = b; //отображаем битмап на pictureBox
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            sd++; //увеличиваем счетчик
            //gr.FillRectangle(bgcol, 0, 0, 500, 500);//заливаем фон
 
 
            if (sd < 51) //пока счетчик < 51
            {
                i1 += 1; //верхний левый круг движется вправо
            }
            if (sd >= 65 && sd < 116)
            {
                i2 += 1; //нижний правый круг движется влево
            }
            if (sd >= 130 && sd < 181)
            {
                i3 += 1; //нижний левый круг движется вверх
            }
            if (sd >= 195 && sd < 246)
            {
                i4 += 1; //верхний правый круг движетсят вниз
            }
 
            if (sd == 260) { sd = 0; i4 = 0; i1 = 0; i2 = 0; i3 = 0; } //обнуляем все счетчики
            MoveEll(); //вызываем функцию движения кругов
        }
    }
}