سوالی در رابطه با گرافیک در c#

mahin.m

New Member
سلام دوستان
برنامه ای نوشتم که در اون یک لوزی و 3 دایره در حال حرکتند.
حالا میخوام این دایره های در حال حرکت رنگ هاشون به ترتیب تغییر کنه.
ممنونم میشم اگه کمک کنید.
کد ها به این ترتیبه :
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 shape
{
public partial class Form1 : Form
{
private int xPosition = 940;
public Form1()
{
InitializeComponent();
}
private void Redraw()
{
int l = xPosition;



Bitmap bm = new Bitmap(940, 480);
Graphics gr = Graphics.FromImage(bm);
Point[] points1 = { new Point(l, 50), new Point(l + 20, 40), new Point(l + 40, 50), new Point(l + 20, 60) };

gr.DrawPolygon(Pens.Red, points1);
gr.DrawEllipse(Pens.Blue, l + 40, 40, 15, 15);
gr.DrawEllipse(Pens.Orange, l + 55, 40, 15, 15);
gr.DrawEllipse(Pens.Green, l + 70, 40, 15, 15);
pictureBox1.Width = bm.Width;
pictureBox1.Height = bm.Height;
pictureBox1.BackgroundImage = bm;

}

private void Form1_Load(object sender, EventArgs e)
{

}

private void timer1_Tick(object sender, EventArgs e)
{
xPosition--;
if (xPosition < -10)
xPosition = 940;
Redraw();

}


}
}
 

the_king

مدیرکل انجمن
همونجا که متغیر xPosition رو تعریف کردید یک متغیر Index رو هم اضافه کنید :
کد:
        private int xPosition = 940, index = 0;

و کد تابع ()Redraw رو هم با این کد ها جایگزین کنید :
کد:
        private void Redraw()
        {
            int l = xPosition;
            Bitmap bm = new Bitmap(940, 480);
            Graphics gr = Graphics.FromImage(bm);
            Point[] points1 = { new Point(l, 50), new Point(l + 20, 40), new Point(l + 40, 50), new Point(l + 20, 60) };
            Pen[] pens = new Pen[3];
            pens[0] = Pens.Blue;
            pens[1] = Pens.Orange;
            pens[2] = Pens.Green;
            gr.DrawPolygon(Pens.Red, points1);
            gr.DrawEllipse(pens[index % 3], l + 40, 40, 15, 15);
            gr.DrawEllipse(pens[(index + 1) % 3], l + 55, 40, 15, 15);
            gr.DrawEllipse(pens[(index + 2) % 3], l + 70, 40, 15, 15);
[B][COLOR="Blue"]            if (xPosition % 5 == 0)
                index++;[/COLOR][/B]
            pictureBox1.Width = bm.Width;
            pictureBox1.Height = bm.Height;
            pictureBox1.BackgroundImage = bm;
        }

اون شرط xPosition % 5 == 0 سرعت تغییر رنگ رو مشخص می کنه. نمی دونم در برنامه تون timer1 با
چه Interval ای کار می کنه در نتیجه سرعت رنگ عوض کردن رو باید خودتون تنظیم کنید،
من روی 5 قرار دادم، هر چه بیشترش کنید کندتر رنگ عوض می کنه.
 

جدیدترین ارسال ها

بالا