Drawing Colors in a picturebox?
Asked Answered
S

3

1

In C# i have a picturebox. i would like to draw 4 colors. The default will be white, red, green, blue. How do i draw these 4 colors stritched in this picbox? or should i have 4 picbox? in that case how do i set the rgb color?

Selfmortification answered 11/7, 2009 at 10:36 Comment(1)
Your question is quite vague. Do you want to draw rectangles in each part? Draw pixels? What?Tool
C
8

You need to specify what it is you would specifically like to draw. You can't draw a red - that makes no sense. You can, however, draw a red rectangle at location (0,0) which is 100 pixels tall and 100 wide. I will answer what I can, however.

If you want to set the outline of a shape to a specific color, you would create a Pen object. If you want to fill a shape with a color, however, then you would use a Brush object. Here's an example of how you would draw a rectangle filled with red, and a rectangle outlined in green:

private void pictureBox_Paint(object sender, PaintEventArgs e)
{
    Graphics graphics = e.Graphics;

    Brush brush = new SolidBrush(Color.Red);
    graphics.FillRectangle(brush, new Rectangle(10, 10, 100, 100));

    Pen pen = new Pen(Color.Green);
    graphics.DrawRectangle(pen, new Rectangle(5, 5, 100, 100));
}
Chronister answered 11/7, 2009 at 10:47 Comment(0)
U
2

Add a PictureBox to the form, create an event handler for the paint event, and make it look like this:

private void PictureBox_Paint(object sender, PaintEventArgs e)
{
    int width = myPictureBox.ClientSize.Width / 2;
    int height = myPictureBox.ClientSize.Height / 2;

    Rectangle rect = new Rectangle(0, 0, width, height);
    e.Graphics.FillRectangle(Brushes.White, rect);
    rect = new Rectangle(width, 0, width, height);
    e.Graphics.FillRectangle(Brushes.Red, rect);
    rect = new Rectangle(0, height, width, height);
    e.Graphics.FillRectangle(Brushes.Green, rect);
    rect = new Rectangle(width, height, width, height);
    e.Graphics.FillRectangle(Brushes.Blue, rect);
}

This will divide the surface into 4 rectangles and paint each of them in the colors White, Red, Green and Blue.

Unreflective answered 11/7, 2009 at 10:45 Comment(0)
J
0

If you want to use non-predefined colors, then you need to get a Color object from the static method Color.FromArgb().

int r = 100;
int g = 200;
int b = 50;

Color c = Color.FromArgb(r, g, b);

Brush brush = new SolidBrush(c);
//...

Best Regards
Oliver Hanappi

Jacques answered 11/7, 2009 at 10:56 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.