Как нарисовать круг и линию в PictureBox?
Как нарисовать круг и линию в PictureBox?
Ответы (3)
Picturebox является элементом управления и имеет изображение в качестве источника, поэтому вам нужно нарисовать изображение и передать изображение элементу управления, чтобы показать его.
MyImage = new Bitmap(fileToDisplay);
pictureBox1.ClientSize = new Size(xSize, ySize);
pictureBox1.Image = MyImage;
or:
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawLine(
new Pen(Color.Red,2f),
new Point(0,0),
new Point(pictureBox1.Size.Width, pictureBox1.Size.Height ));
e.Graphics.DrawEllipse(
new Pen(Color.Red, 2f),
0,0, pictureBox1.Size.Width, pictureBox1.Size.Height );
}
Обработайте событие рисования окна изображения и сделайте там свой собственный рисунок.
Лучший способ - НЕ рисовать круг и линию в картинке! Он не предназначен для этой цели.
Из блога Боба Пауэлла GDI+:
Корень этой проблемы в том, что фундаментальные правила программирования Windows были нарушены. И как следствие фото бокс обвиняют в том, что на самом деле не его вина. Чтобы объяснить, почему, в четырех приведенных ниже пунктах показано, что пошло не так в этом случае.
Элемент управления PictureBox предназначен для отображения изображений. Это не удобный заполнитель для графической поверхности.
Windows — это система, управляемая событиями, в которой каждое событие должно обслуживаться в правильном контексте, а события, предназначенные для обработки событий нажатия кнопки или перемещения мыши, не должны использоваться для рисования на экране или других странных вещей.
PictureBox обновляется, рисуя объект на основе System.Drawing.Image, хранящийся в его свойстве Image. Если изображения нет, оно будет показывать цвет фона.
Кража и использование объекта Graphics любого элемента управления не является хорошей практикой, категорически не рекомендуется и нарушает правила обработки событий в нужном месте в нужное время. В основном, если вы это сделаете, это причинит вам боль. Когда ты бьешься головой о стену, это причиняет тебе боль. это знак того, что вы должны прекратить это делать. То же самое и с вызовом PictureBox.CreateGraphics.
Правильный способ сделать это.
Следовать правилам системы, управляемой событиями, легко, но это требует некоторой предусмотрительности. Итак, если вы хотите нарисовать немного графики и оставить ее там, когда окно перемещается перед ним и снова удаляется, или когда вы сворачиваете и восстанавливаете, вы должны обслуживать событие Paint любого объекта, который вы хотите. рисовать. PictureBox несет с собой багаж, который не нужен для такого рода приложений. Если вы просто хотите что-то нарисовать в одном месте, нарисуйте это на форме, отреагировав на событие Form.Paint. Если вам нужен удобный заполнитель для графики, которая работает в заданных границах, используйте элемент управления Panel и обслуживайте его событие Paint. Если вы хотите снова и снова дублировать графику для своего корпоративного изображения, создайте элемент управления и выполните рисование в переопределении OnPaint.
Источник: https://web.archive.org/web/20120330003635/http://bobpowell.net/picturebox.htm (исходный сайт больше не существует).
Control.CreateGraphics
копии всех новичков с также ужасной страницы примера запуска MSDN.
- person TaW; 21.02.2017
PictureBox
, и вместо этого использовать его.
- person Chris Dunaway; 22.02.2017