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

Вход на сайт

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

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

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

Выдаёт ошибку glut32.dll не найден! При том, что он лежит в System32! Всё решил) Нужно отправить не в System32, а в System.
Спасибо за статью. Я не Ваш студент. Но мне она помогла написать функцию для Канторова множества на Python для черепашки: import turtle def kanter(x, y, d):     if d > 1:         turtle...
Как реализовать в данном примере границы расчёта?

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

Рейтинг@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 кб