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

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

Построения
на плоскости (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 Яндекс.Метрика
Среда программирования: 
Microsoft Visual Studio 2010 Express



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace demo3
{
    public partial class Form1 : Form
    {
        Bitmap myBitmap;//объявляем bitmap
        Graphics g;//и графику
        SolidBrush fon = new SolidBrush(Color.DeepSkyBlue);//цвет фона будет голубым
        SolidBrush fil1 = new SolidBrush(Color.BlueViolet);//цвет заливки одних квадратов будет фиолетовым
        SolidBrush fil2 = new SolidBrush(Color.Black);//других будет черным
 
        int perem;// введем переменную, она с ходом таймера будет изменяться, 
        //и в зависимости от присвоенного ей значение будет выполняться определенный тип перемещения квадратов
 
        int k;//на это значение мы будем изменять координаты
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Start();//в данной функции вызвается таймер
        }
        private void Squares()//функция изменения фигуры
        {
            myBitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);//создаем битмап
            Graphics g = Graphics.FromImage(myBitmap);//и графику                       
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//избавляемся от пиксельности по краям
            g.FillRectangle(fon, 0, 0, 600, 600);//заливаем фон
 
 
            if (perem == 0)//если переменная равна нулю
            {
                for (int i = 0; i < 750; i += 70)
                {
                    for (int j = 0; j < 750; j += 70)//мы рисуем массив квадратов, таких что
                    {
                        g.FillRectangle(fil1, -65 + i + k, -65 + j, 30, 30);//одни квадраты будут фиолетовые и будут изменять иксовую координату, двигаясь вправо
                        g.FillRectangle(fil2, -30 + i + k, -65 + j, 30, 30);//квадраты другого цвета будут так же двигаться вправо
                        g.FillRectangle(fil1, -30 + i - k, -30 + j, 30, 30);//в других строках фиолетовые будут перемещаться влево
                        g.FillRectangle(fil2, -65 + i - k, -30 + j, 30, 30);//и черные тоже влево
                    }
                }
                k+=2;//переменную смещения увеличиваем на двойку
                if (k >= 35)//и когда квадраты завершат первый цикл(для этого достаточно 17 смещений)
                {
                    k = 0;//мы обнуляем к
                    perem = 1;// и переменной присваиваем новое значение, чтоб она выполнился следующий цикл
 
                }
            }            
 
            if (perem == 1)//здесь все аналогично, только теперь мы будем смещать полосы по вертикали 
            {
 
                for (int i = 0; i < 750; i += 70)
                {
                    for (int j = 0; j < 750; j += 70)
                    {
                        g.FillRectangle(fil1, -30 + i, -65 + j + k, 30, 30);// одни столбцы вниз
                        g.FillRectangle(fil2, -30 + i, -30 + j + k, 30, 30);
                        g.FillRectangle(fil1, -65 + i, -30 + j - k, 30, 30);//другие вверх
                        g.FillRectangle(fil2, -65 + i, -65 + j - k, 30, 30);
                    }
                }
                k+=2;
                if (k >= 35)//когда смести квадраты на один
                {
                    k = 0;//снова обнуляем
                    perem = 2;//и присваиваем переменной новое значение                    
                }
            }
 
            if (perem == 2)//аналогично
            {
 
                for (int i = 0; i < 750; i += 70)
                {
                    for (int j = 0; j < 750; j += 70)// смещаем ряды квадратов горизонтально, только на этот раз так
                    {
                        g.FillRectangle(fil1, -30 + i - k, -30 + j, 30, 30);//чтоб те ряды, которые в первом цикле перемещались вправо
                        g.FillRectangle(fil2, -65 + i - k, -30 + j, 30, 30);//теперь перемещались влево
                        g.FillRectangle(fil1, -65 + i + k, -65 + j, 30, 30);//а другие - вправо
                        g.FillRectangle(fil2, -30 + i + k, -65 + j, 30, 30);
                    }
                }
                k+=2;
                if (k >= 35)
                {
                    k = 0;//опять обнуляем
                    perem = 3;// и присваиваем новое значение    
                }
            }
 
            if (perem == 3)
            {
 
                for (int i = 0; i < 750; i += 70)
                {
                    for (int j = 0; j < 750; j += 70)
                    {
                        g.FillRectangle(fil1, -65 + i, -30 + j - k, 30, 30);//те ряды, которые во втором цикле перемещались вниз
                        g.FillRectangle(fil2, -65 + i, -65 + j - k, 30, 30);//теперь будут двигаться вверх
                        g.FillRectangle(fil1, -30 + i, -65 + j + k, 30, 30);// а остальные - вверх
                        g.FillRectangle(fil2, -30 + i, -30 + j + k, 30, 30);
                    }
                }
                k+=2;
                if (k >= 35)
                {
                    k = 0;//обнуляем
                    perem = 0;//таким образом цикл завершился и каждый из квадратиков прошел 
                    //по квадратной(простите за тавтологию) траектории, и переместился в исходное положение. 
                    //мы снова присваиваем переменной 0, чтоб квадратики заново начали движение по необходимой траектории
                }
            } 
 
            pictureBox1.BackgroundImage = myBitmap;//и отображаем Bitmap на pictureBox
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            Squares();//в функции таймера вызываем нашу функцию прорисовки квадратов
        }
 
    }
}

Прикрепленный файлРазмер
KozlovaE_Marching_squares.zip43.39 кб