Вопрос

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

Это было полезно?

Решение

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

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

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

Другие советы

Добавьте в форму 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 прямоугольника и окрасит каждый из них в белый, красный, зеленый и синий цвета.

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top