Can someone help me: I want to draw colors every pixel to picturebox
This is what I have done so far:
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 WindowsFormsApplication25
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    private void button1_Click(object sender, EventArgs e)
    {
        timer1.Start();
    }
    private void timer1_Tick(object sender, EventArgs e)
    {
        pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
        int x, y;
        for (y = 0; y < 200; y++)
        {
            for (x = 0; x < 200; x++)
            {
                ((Bitmap)pictureBox1.Image).SetPixel(x, y, Color.FromArgb(255, 255, 0));
            }
        }
    } 
}
}
I have added a Timer so i can see the progress in drawing every pixel.
The problem the code do draw in memory - delay - then put in picture box
I want draw color every y = 0 and x = 0 to 200 , y =1 x = 0 to 200, y=2 x=0 to 200 etc
Each time your timer ticks you want to draw another pixel with (different?) color, right?
What you need to do is declare current x and y coordinates outside of timer1_Tick method and increase their values accordingly every time you draw something.
To immediately see the results you should also call pictureBox1.Refresh() inside timer1_Tick(). Here's my quick solution to draw 200x200 bitmap with a pattern similar to this: All 24-bit RGB colors.
public partial class Form1 : Form
{
    private int bitmapWidth = 200;
    private int bitmapHeight = 200;
    private int currentX = 0;
    private int currentY = 0;
    public Form1()
    {
        InitializeComponent();
        pictureBox1.Image = new Bitmap(bitmapWidth, bitmapHeight);
    }
    private void button1_Click(object sender, EventArgs e)
    {
        if (timer1.Enabled)
        {
            timer1.Stop();
        }
        else
        {
            timer1.Start();
        }
    }
    private void timer1_Tick(object sender, EventArgs e)
    {
        double partWidth = (bitmapWidth / (double)16);
        int r = (int)(255 * currentX / partWidth) % 256;
        int g = (int)(255 * (currentY % partWidth) / partWidth) % 256;
        int b = (int)(Math.Floor(currentX / partWidth) + Math.Floor(currentY / partWidth) * 16);
        ((Bitmap)pictureBox1.Image).SetPixel(currentX, currentY, Color.FromArgb(r, g, b));
        pictureBox1.Refresh();
        if (currentX < bitmapWidth - 1)
        {
            currentX++;
        }
        else if (currentY < bitmapHeight - 1)
        {
            currentX = 0;
            currentY++;
        }
        else
        {
            timer1.Stop();
        }
    }
}
You can alter colors produced by calculating them off of currentX, currentY and partWidth. Note: I assumed you draw a square bitmap. Drawing to a rectangle would require some more work. Same thing applies to different sizes.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With