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

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

Построения
на плоскости (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 demo1
{
    public partial class Form1 : Form
    {
        Bitmap myBitmap;//объявляем bitmap
        Graphics g;//и графику
        SolidBrush fil = new SolidBrush(Color.Black);//цвет заливки фигуры будет черным
        SolidBrush fon = new SolidBrush(Color.White);//цвет фона будет белым
        Point[] myPoint1 = new Point[]{//этот массив точек будет описывать исходное состояние фигуры - квадрат
                new Point( -100, -100 ),
                new Point( -100, 100 ),
                new Point( 100, 100 ),
                new Point( 100, -100 ),
        };
        Point[] myPoint2 = new Point[]{//а этим описан восьмиугольник, который будет превращаться в квадрат
                new Point( -100, 0 ),
                new Point( -50, 50 ),
                new Point( 0, 100 ),
                new Point( 50, 50 ),
                new Point( 100, 0 ),
                new Point( 50, -50 ),
                new Point( 0, -100 ),
                new Point( -50, -50 )
        };
 
        bool draws = true;//создаем переменную типа bool, дальше станет ясно, зачем она нам нужна
 
        public Form1()
        {
            InitializeComponent();
        }        
        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Start();//в данной функции вызвается таймер
        }
 
        private void Change()//функция изменения фигуры
        {
            myBitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);//создаем битмап 
            Graphics g = Graphics.FromImage(myBitmap);//и графику                       
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//избавляемся от пиксельности по краю фигуры
            g.FillRectangle(fon, 0, 0, 500, 400);//заливаем фон
 
            g.TranslateTransform((float)pictureBox1.Width / 2, (float)pictureBox1.Height / 2);//смещаем начало координат в центр
            //запускается цикл, в котором и будет с течением времени изменяться рисунок
            if (draws)//если переменной присвоено значение true
            {
                myPoint1[0].Y += 2;//то смещаем координаты вершин квадрата по прямым, 											
                myPoint1[1].X += 2;//передвигая их на координатные оси
                myPoint1[2].Y -= 2;//
                myPoint1[3].X -= 2;//
                g.FillPolygon(fil, myPoint1);//прорисовываем нашу фигуру, используя массив точек квадрата
                if (myPoint1[1].X == 0)//когда вершины четырехугольника окажутся на осях,                   
                { //(для этого достаточно проверить только одно условие)
                    draws = false;//переменной присваиваем значение false 
                    myPoint1[0].Y = -100;//и вершины снова смещаем в положение исходного квадрата
                    myPoint1[1].X = -100;
                    myPoint1[2].Y = 100;
                    myPoint1[3].X = 100;
                }
            }
            else//иначе(т.е. когда переменной присвоено значение false)
            {
                myPoint2[1].X -= 2; myPoint2[1].Y += 2;//четыре точки восьмиугольника мы смещаем так, 
                myPoint2[3].X += 2; myPoint2[3].Y += 2;//чтоб в конечном итоге у нас получился квадрат
                myPoint2[5].X += 2; myPoint2[5].Y -= 2;
                myPoint2[7].X -= 2; myPoint2[7].Y -= 2;
                g.FillPolygon(fil, myPoint2);//прорисовываем фигуру, используя массив точек восьмиугольника
                if (myPoint2[1].X == -100)//и вот когда у нас уже получился квадрат                    
                {//(для этого опять же достаточно проверить положение всего одной точки)
                    draws = true;//мы снова присваиваем переменной значение true, 
                    myPoint2[1].X = -50; myPoint2[1].Y = 50;//а точки смещаем в положение исходного восьмиугольника
                    myPoint2[3].X = 50; myPoint2[3].Y = 50;
                    myPoint2[5].X = 50; myPoint2[5].Y = -50;
                    myPoint2[7].X = -50; myPoint2[7].Y = -50;
                }
            }
 
            pictureBox1.BackgroundImage = myBitmap;//и отображаем Bitmap на pictureBox
 
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            Change();//в функции таймера вызываем нашу функцию изменения фигуры
        }
 
 
    }
}

Прикрепленный файлРазмер
KozlovaE_Shrinking_and_expanding.zip47.11 кб