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

Вход на сайт

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

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

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

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

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

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

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 demoscene1
{
    public partial class Form1 : Form
    {
        private Bitmap bitmap;                                        //инициализируем битмэп
        private Graphics graphix;                                     //инициализируем графику
        SolidBrush background = new SolidBrush(Color.Blue);           //задаем цвет фона
        SolidBrush circles = new SolidBrush(Color.White);             //задаем цвет кружков
        float parameter1, parameter2, parameter3, parameter4, parameter5;            //задает вращение кругов
        float step;                                          //шаг анимации
        float angle;                                         //угол вращения
        float x1, y1, x2, y2, x3, y3, x4, y4, x5, y5;        //координаты кружков
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void CirclesLoading()
        {
            bitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            graphix = Graphics.FromImage(bitmap);
            graphix.FillRectangle(background, 0, 0, pictureBox1.Width, pictureBox1.Height);     //закрашиваем фон
            graphix.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;           //сглаживание
            graphix.TranslateTransform((float)pictureBox1.Width / 2, (float)pictureBox1.Height / 2);       //перемещаем координаты в центр 
 
            pictureBox1.BackgroundImage = bitmap;               //здесь будет отображаться анимация
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Start();                                     //начало работы анимации
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            CirclesLoading();                                   //загружаем функцию с битмэпом, графикой и отображением анимации
            step++;                                             //количество шагов анимации будет постепенно увеличиваться на шаг
            angle += (float)0.02262;                            //изменяем приращение угла
 
            if (step >= 0)
            {
                x1 = -30 + (float)(180 * (float)Math.Sin(0.20285 + angle + parameter1));         //описываем положение кругов
                y1 = -30 + (float)(180 * (float)Math.Cos(0.20285 + angle + parameter1));
                x2 = -30 + (float)(180 * (float)Math.Sin(-0.05285 + angle + parameter2));
                y2 = -30 + (float)(180 * (float)Math.Cos(-0.05285 + angle + parameter2));
                x3 = -30 + (float)(180 * (float)Math.Sin(-0.31295 + angle + parameter3));         
                y3 = -30 + (float)(180 * (float)Math.Cos(-0.31295 + angle + parameter3));
                x4 = -30 + (float)(180 * (float)Math.Sin(-0.55295 + angle + parameter4));        
                y4 = -30 + (float)(180 * (float)Math.Cos(-0.55295 + angle + parameter4));
                x5 = -30 + (float)(180 * (float)Math.Sin(-0.80095 + angle + parameter5));        
                y5 = -30 + (float)(180 * (float)Math.Cos(-0.80095 + angle + parameter5));
 
                graphix.FillEllipse(circles, x1, y1, 50, 50);           //закрашиваем круги
                graphix.FillEllipse(circles, x2, y2, 50, 50);
                graphix.FillEllipse(circles, x3, y3, 50, 50);
                graphix.FillEllipse(circles, x4, y4, 50, 50);
                graphix.FillEllipse(circles, x5, y5, 50, 50);
 
                parameter1 += (float)0.16312;   //начало движения первого круга
 
                if (step > 31)
                {
                    parameter1 -= (float)0.16312;   //прекращение движения первого круга
                    parameter2 += (float)0.16312;   //начало движения второго круга
                }
 
                if (step > 62)
                {
                    parameter2 -= (float)0.16312;   //прекращение движения второго круга
                    parameter3 += (float)0.16312;   //начало движения третьего круга
                }
 
                if (step > 93)
                {
                    parameter3 -= (float)0.16312;   //прекращение движения третьего круга
                    parameter4 += (float)0.16312;   //начало движения четвертого круга
                }
 
                if (step > 124)
                {
                    parameter4 -= (float)0.16312;   //прекращение движения четвертого круга
                    parameter5 += (float)0.16312;   //начало движения пятого круга
                }
 
                if (step > 155)
                {
                    parameter5 -= (float)0.16312;   //прекращение движения пятого круга
                    parameter1 += (float)0.16312;
                }
 
                if (step > 186)
                {
                    parameter1 -= (float)0.16312;
                    parameter2 += (float)0.16312;
                }
 
                if (step > 217)
                {
                    parameter2 -= (float)0.16312;
                    parameter3 += (float)0.16312;
                }
 
                if (step > 248)
                {
                    parameter3 -= (float)0.16312;
                    parameter4 += (float)0.16312;
                }
 
                if (step > 279)
                {
                    parameter4 -= (float)0.16312;
                    parameter5 += (float)0.16312;
                }
 
                if (step > 310)
                {
                    parameter5 -= (float)0.16312;
                    parameter1 += (float)0.16312;
                }
 
                if (step > 341)
                {
                    parameter1 -= (float)0.16312;
                    parameter2 += (float)0.16312;
                }
 
                if (step > 372)
                {
                    parameter2 -= (float)0.16312;
                    parameter3 += (float)0.16312;
                }
 
                if (step > 403)
                {
                    parameter3 -= (float)0.16312;
                }
 
                if (step == 420)            //когда анимация дойдет до 420-го шага, то...
                {
                    parameter1 = 0;         //обнуляем все счетчики
                    parameter2 = 0;
                    parameter3 = 0;
                    parameter4 = 0;
                    parameter5 = 0;
 
                    angle = 0;
 
                    step = 0;
                }
            }
        }
    }
}

Прикрепленный файлРазмер
zakharov_demoscene1.zip54.58 кб