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

Вход на сайт

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

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

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

Спасибо за реализацию, она действительно быстрая. Но не все линии отрисовывает в нужную сторону... Необходимо добавить проверку для случая X-линии if(y1 "<" y0) grad=-grad; и аналогично для Y-линии if(x1 "<" x0) grad=-grad; P.S. На...
Отличные уроки(учу GL по ним), только в renderScene нужно добавить очистку буфера цвета и буфера глубины. При изменении размеров треугольники размножаются)
как исправить это , сделал все по инструкции
Timer1 - выдает ошибку. Использовал IdleTimer1, работает! unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, OpenGLContext, GL, GLU; type { TForm1 } TForm1 =...
в коде присутствуют ошибки! // Считываем координаты procedure TForm1.getCoords(Sender: TObject); var j1:longint; begin n:= StrToInt(Edit2.Text); //число точек s1:=Edit1.Text; s2:=''; i := 1; j:=1; k:=0...

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

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

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 WindowsFormsApplication2
{
 
    public partial class Form1 : Form
    {
        private Bitmap bitmap;                                           //инициализируем битмэп
        private Graphics graphix;                                     //инициализируем графику
        SolidBrush BG = new SolidBrush(Color.FromArgb(65 ,105 ,225));           //задаем цвет фона
        SolidBrush rect1 = new SolidBrush(Color.FromArgb(240 ,255 ,240));           //задаем цвет квадратов
        SolidBrush rect2 = new SolidBrush(Color.Black);            
 
        Pen PenRect = new Pen(Color.Black, 3);                                  //цвет контура кругов и центрального
                                                                                //центрального квадрата           
        float i;                          //переменная для цикла
        float angle;                        //угол
        int sr, se, cnt;                    //радиусы кругов и квадрата, счетчик
        float k = 0;                        //отвечает за перемещение черных прямоугольников
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void DRAW()
        {
            bitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);                      //создаем битмап
            graphix = Graphics.FromImage(bitmap);                                            //создаем графику
            graphix.FillRectangle(BG, 0, 0, pictureBox1.Width, pictureBox1.Height);                    //закрашиваем фон
            graphix.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;                     //сглаживание
            graphix.TranslateTransform((float)pictureBox1.Width / 2, (float)pictureBox1.Height / 2);       //перемещаем координаты в центр 
 
            graphix.RotateTransform(angle);                                                                    //поворачиваем на заданный угол
 
            graphix.DrawRectangle(PenRect, -50 - sr, -50 - sr, 100 + sr * 2, 100 + sr * 2); //рисуем квадрат
            graphix.DrawEllipse(PenRect, -se, -se, se * 2, se * 2);               //рисуем круги
            graphix.DrawEllipse(PenRect, se * 2,   se * 2,  se * 2, se * 2);
            graphix.DrawEllipse(PenRect, -se * 4, -se * 4, se * 2, se * 2);
            graphix.DrawEllipse(PenRect, se * 2, -se * 4, se * 2, se * 2);
            graphix.DrawEllipse(PenRect, -se * 4, se * 2, se * 2, se * 2);
 
            for (i = 0; i < 17; i++)
            {
                graphix.FillRectangle(rect1, 60 + 15 * i, -50 + i * (float)2.5, 10, 100 - i * 5);     //прямоугольники справа          
            }
 
            for (i = 0; i < 17; i++)
            {
                graphix.FillRectangle(rect1, -50 + i * (float)2.5, -70 - 15 * i, 100 - i * 5, 10);        //верхние прямоугольники
            }
 
            for (i = 0; i < 17; i++)
            {
                graphix.FillRectangle(rect1, -50 + i * (float)2.5, 60 + 15 * i, 100 - i * 5, 10);      //нижние прямоугольники
            }
 
            for (i = 0; i < 17; i++)
            {
                graphix.FillRectangle(rect1, -70 - 15 * i, -50 + i * (float)2.5, 10, 100 - i * 5);       //прямоугольники слева 
            }
 
            graphix.FillRectangle(rect2, 60 + 15 * k, - 50 + k * (float)2.5, 10, 100 - k * 5);          //черные двигающиеся
            graphix.FillRectangle(rect2, -50 + k * (float)2.5, -70 - 15 * k, 100 - k * 5, 10);          //прямоугольники
            graphix.FillRectangle(rect2, -50 + k * (float)2.5, 60 + 15 * k, 100 - k * 5, 10);
            graphix.FillRectangle(rect2, -70 - 15 * k, -50 + k * (float)2.5, 10, 100 - k * 5);
 
            pictureBox1.BackgroundImage = bitmap;// отображаем Bitmap на pictureBox
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            DRAW();
            angle += (float)1;              //увеличиваем угол
            cnt++;                          //увеличиваем счетчик
 
            if(cnt < 150)               //пока счетчик меньше 150
            {
                sr--;                       //уменьшаем радиус центрального квадрата
                k += (float)0.1;            //перемещаем черные прямоугольники 
            }   
 
            if(cnt > 50 && cnt < 100)       //счетчик больше 50 и меньше 100
            {
                se++;                       //перемещаем черные круги от центра  
            }
 
            if(cnt > 100 && cnt < 150)          //счетчик больше 100 и меньше 150
            {
                se--;                           //перемещаем круги в центр
            }
 
            if (cnt > 150)                      //счетчик больше 150
            {
                sr++;                           //увеличиваем квадрат
                k -= (float)0.1;                //перемещаем черные прямоугольники обратно
            }
 
            if(cnt > 150 && cnt < 200)          //счетчик больше 150 и меньше 200
            {
                se++;                           //перемещаем круги от центра 
            }
 
            if(cnt > 200 && cnt < 250)          //счетчик больше 200 меньше 250
            {
                se--;                           //перемещаем круги в центр       
            }
 
            if(cnt == 300)                  //счетчик равен 300 обнуляем переменные
            {
                sr = 0;
                se = 0;
                cnt = 0;
                k = 0;
            }
        }
    }
}

Прикрепленный файлРазмер
Volkov_Ellipses.rar49.74 кб