Рисование цветов в картинке? - PullRequest
1 голос
/ 11 июля 2009

В C # у меня есть картинка. Я хотел бы нарисовать 4 цвета. По умолчанию будет белый, красный, зеленый, синий. Как мне нарисовать эти 4 цвета в этой коробке? или я должен иметь 4 Picbox? в таком случае, как мне установить цвет RGB?

Ответы [ 3 ]

8 голосов
/ 11 июля 2009

Вам необходимо указать, что именно вы хотели бы нарисовать. Вы не можете нарисовать красный - это не имеет смысла. Однако вы можете нарисовать красный прямоугольник в месте (0,0), которое имеет высоту 100 пикселей и ширину 100 пикселей. Я отвечу, что могу, однако.

Если вы хотите установить контур фигуры на определенный цвет, вы должны создать объект Pen . Однако, если вы хотите заполнить фигуру цветом, вы должны использовать объект Brush. Вот пример того, как бы вы нарисовали прямоугольник, заполненный красным, и прямоугольник, обведенный зеленым:

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));
}
2 голосов
/ 11 июля 2009

Добавьте PictureBox в форму, создайте обработчик события для события рисования и сделайте так, чтобы он выглядел следующим образом:

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);
}

Это разделит поверхность на 4 прямоугольника и раскрасит каждый из них в цвета Белый, Красный, Зеленый и Синий.

0 голосов
/ 11 июля 2009

Если вы хотите использовать не предопределенные цвета, вам нужно получить объект Color из статического метода Color.FromArgb ().

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

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

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

С наилучшими пожеланиями
Оливер Ханаппи

...