Язык программирования:
C#
Среда программирования:
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 WindowsFormsApplication1 { public partial class Form1 : Form { Bitmap myBitmap;//объявляем bitmap Graphics g;//объявляем графику SolidBrush bgcol = new SolidBrush(Color.White);//цвет фона будет белым SolidBrush col1 = new SolidBrush(Color.White);//изначально каждому кругу устанавливаем белый цвет SolidBrush col2 = new SolidBrush(Color.White); SolidBrush col3 = new SolidBrush(Color.White); SolidBrush col4 = new SolidBrush(Color.White); SolidBrush col5 = new SolidBrush(Color.White); SolidBrush col6 = new SolidBrush(Color.White); float x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6;//объявляем координаты каждого круга float angle;//угол int c1, c2;//этими переменными будем менять цвета int cnt;//понадобится для таймера public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { timer1.Start();//вызвается таймер } private void Dots()//функция изменения фигуры { myBitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);//создаем битмап Graphics g = Graphics.FromImage(myBitmap);//и графику g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//избавляемся от пиксельности по краям g.FillRectangle(bgcol, 0, 0, 500, 500);//заливаем фон g.TranslateTransform((float)pictureBox1.Width / 2, (float)pictureBox1.Height / 2);//смещаем начало координат в центр SolidBrush col1 = new SolidBrush(Color.FromArgb(255, c2, 0));//каждый цвет заливки в формате ргб изменяем так, чтоб он переходил в соседний SolidBrush col2 = new SolidBrush(Color.FromArgb(255, 127-c1, 127-c1)); SolidBrush col3 = new SolidBrush(Color.FromArgb(c2, c1, 255-c1)); SolidBrush col4 = new SolidBrush(Color.FromArgb(0, 127-c1, 255)); SolidBrush col5 = new SolidBrush(Color.FromArgb(0, 255-c1, c2)); SolidBrush col6 = new SolidBrush(Color.FromArgb(255-c2, 255, 0)); x1 = -40 + (float)(180 * (float)Math.Cos(1.570796325 + angle));//описываем движение кругов y1 = -40 + (float)(180 * (float)Math.Sin(1.570796325 + angle)); x2 = -40 + (float)(180 * (float)Math.Cos(2.617993875 + angle)); y2 = -40 + (float)(180 * (float)Math.Sin(2.617993875 + angle)); x3 = -40 + (float)(180 * (float)Math.Cos(3.665191425 + angle)); y3 = -40 + (float)(180 * (float)Math.Sin(3.665191425 + angle)); x4 = -40 + (float)(180 * (float)Math.Cos(4.712388975 + angle)); y4 = -40 + (float)(180 * (float)Math.Sin(4.712388975 + angle)); x5 = -40 + (float)(180 * (float)Math.Cos(5.759586525 + angle)); y5 = -40 + (float)(180 * (float)Math.Sin(5.759586525 + angle)); x6 = -40 + (float)(180 * (float)Math.Cos(6.806784075 + angle)); y6 = -40 + (float)(180 * (float)Math.Sin(6.806784075 + angle)); g.FillEllipse(col1, x1, y1, 80, 80);//рисуем сами круги g.FillEllipse(col2, x2, y2, 80, 80); g.FillEllipse(col3, x3, y3, 80, 80); g.FillEllipse(col4, x4, y4, 80, 80); g.FillEllipse(col5, x5, y5, 80, 80); g.FillEllipse(col6, x6, y6, 80, 80); pictureBox1.BackgroundImage = myBitmap;//и отображаем Bitmap на pictureBox } private void timer1_Tick(object sender, EventArgs e) { angle -= (float)0.00411;//изменяем приращение угла cnt++;//увеличиваем переменную количества //так как палитра красных, зеленых и синих цветов должна изменятся неравномерно, //то мы будем изменять кое-какие цвета в два раза чаще, чем другие if (cnt % 2 == 0) { c1++; } c2++; if (cnt == 255) { angle = 0; cnt = 0; c1 = 0; c2 = 0; }//когда таймер пройдет определенное количество циклов, все обнуляем Dots();//вызываем функцию прорисовки } } }
Прикрепленный файл | Размер |
---|---|
ColorDotsTravin.zip | 48.52 кб |