C#. Рисую множество прямоугольников (создал класс Rect со свойствами x и y), которые заранее я уже проинициализировал. Каждый прямоугольник с координатами записан в массив. При событии OnPaint панели выполняем следующее:
private void panel3_Paint(object sender, PaintEventArgs e)
{
Form1.hexMatrInit(); //инициализируем координаты всех элементов матрицы прямоугольников
ShowRect(Form1.hexes[0, 1], e);
ShowRect(Form1.hexes[5, 8], e);
}
}
Метод ShowRect просто рисует прямоугольник ручкой.
public void ShowRect(Rect a, PaintEventArgs e)
{
//используем объект e.Graphics
using (Graphics g = e.Graphics)
{
//создаем кисть с определенным для нее цветом
using(Pen pen = new Pen(Color.Tomato, 2));
{
//Рисуем прямоугольник
g.DrawRectangle(pen, Convert.ToSingle(a.x), Convert.ToSingle(a.y), Convert.ToSingle(Rect.sizex), Convert.ToSingle(Rect.sizey));
}
}
}
В результате первый прямоугольник рисуется, а при рисовании второго срабатывает исключение ArgumentException для pen.
"pen.CustomEndCap" запустило исключение типа "System.ArgumentException"
"pen.CustomStartCap" запустило исключение типа "System.ArgumentException"
"pen.DashPattern" запустило исключение типа "System.OutOfMemoryException"
Как исправить такую проблему?
Примечание:
В hexes массив из прямоугольников класса Rect размерностью [Form1.nrow, Form1.ncol]. Сам класс Rect содержит в себе два свойства с координатами x и y верхнего левого угла, а также свойство ширины sizex и высоты sizey прямоугольника (sizex и sizey постоянны для всех прямоугольников, только get).
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.