Лучший отвечающий
нарисовать сетку поверх рисунка

Вопрос
-
Подскажите пожалуйста! Я нарисовал сетку в pictureBox,но ее не видно на рисунке что мне нужно для этого сделать? Я это сделал использовав свойство Paint в pictureBox1!10 октября 2012 г. 6:46
Ответы
-
да вроде бы в той же перегрузке онпейнта и делается всё.
просто сначала рисовать рисунок,
а потом на том же самом графикСе рисовать сетку.
она сверху наверное и получится.
не?
графикС приходит в "е"- Изменено INFEL8 10 октября 2012 г. 7:01
- Предложено в качестве ответа Алексей ЛосевEditor 10 октября 2012 г. 7:02
- Помечено в качестве ответа Abolmasov Dmitry 12 октября 2012 г. 8:33
10 октября 2012 г. 7:00 -
попробовал, у меня поверх картинки рисуется.
рисую так (для пробы линия обычная):
void pictureBox1_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawLine(new Pen(Color.Red), 0, 0, ((Control)sender).Width, ((Control)sender).Height); //throw new NotImplementedException(); }
картинку так гружу:
pictureBox1.ImageLocation = "картинка.jpg";
У Вас иначе как-то сделано?
не говорю, что у меня единственно рабочий вариант,
просто спрашиваю, для конкретики.- Изменено INFEL8 10 октября 2012 г. 14:38
- Помечено в качестве ответа Abolmasov Dmitry 12 октября 2012 г. 8:34
10 октября 2012 г. 14:35 -
Еще кто–нибудь может чего посоветовать?
Если устроит сетка, нарисованная точками, а не линиями, то можно попробовать использовать метод DrawGrid класса ControlPaint.
void pictureBox1_Paint(object sender, PaintEventArgs e) { ControlPaint.DrawGrid(e.Graphics, e.ClipRectangle, new Size(10, 10), Color.White); }
Отмечу, что компонент PictureBox - довольно тяжёлый компонент, и его не стоит использовать для рисования, а только для работы с растровыми изображениями. Для рисования лучше использовать просто панель - Panel.
И не используйте столько восклицательных знаков. Пропадает всякое желание отвечать блондинке.
- Изменено Petalvik 11 октября 2012 г. 16:01
- Помечено в качестве ответа Abolmasov Dmitry 12 октября 2012 г. 8:35
11 октября 2012 г. 15:59
Все ответы
-
да вроде бы в той же перегрузке онпейнта и делается всё.
просто сначала рисовать рисунок,
а потом на том же самом графикСе рисовать сетку.
она сверху наверное и получится.
не?
графикС приходит в "е"- Изменено INFEL8 10 октября 2012 г. 7:01
- Предложено в качестве ответа Алексей ЛосевEditor 10 октября 2012 г. 7:02
- Помечено в качестве ответа Abolmasov Dmitry 12 октября 2012 г. 8:33
10 октября 2012 г. 7:00 -
Я так и сделал, но сетка оказалась по бокам рисунка!10 октября 2012 г. 7:10
-
а рисунок рисуется или это картинка загруженная?
правда если 2-й вариант, то не подскажу, (надо пробовать, так не помню ни чего)
а если 1-й вариант, то не понятно почему так произошло у Вас.
тоже наверное смотреть надо10 октября 2012 г. 7:18 -
Картинка загружена!10 октября 2012 г. 7:23
-
попробовал, у меня поверх картинки рисуется.
рисую так (для пробы линия обычная):
void pictureBox1_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawLine(new Pen(Color.Red), 0, 0, ((Control)sender).Width, ((Control)sender).Height); //throw new NotImplementedException(); }
картинку так гружу:
pictureBox1.ImageLocation = "картинка.jpg";
У Вас иначе как-то сделано?
не говорю, что у меня единственно рабочий вариант,
просто спрашиваю, для конкретики.- Изменено INFEL8 10 октября 2012 г. 14:38
- Помечено в качестве ответа Abolmasov Dmitry 12 октября 2012 г. 8:34
10 октября 2012 г. 14:35 -
А как сделать чтобы это была сетка?11 октября 2012 г. 8:14
-
сделать вместо одной этой диагональной линии несколько вертикальных линий с нужным шагом,
и несколько горизонтальных линий тоже с нужным шагом.
А мой вариант и у Вас поверх картинки рисуется?- Изменено INFEL8 11 октября 2012 г. 8:36
11 октября 2012 г. 8:35 -
да рисуется!11 октября 2012 г. 8:48
-
ну вот, сделайте сетку как я сказал и должно быть нормально )11 октября 2012 г. 9:19
-
А для этого нужно задавать цикл?11 октября 2012 г. 9:27
-
если линий больше чем вам не жалко копирований/вставок, то да.
может там по 2 линии всего, так цикл не особо и надо.
Вам виднее.11 октября 2012 г. 10:16 -
напишите пожалуйста пример с циклом так как бы вы его сделали.Пожалуйста!11 октября 2012 г. 13:15
-
for(int i = 0;i< число линий по горизонтали тут;i++)
{
рисуем линию, смещённую на (расстояние между линиями * (i+1)); // или не +1, как надо так и делайте
}так же и для вертикальных линий,
там правда свои смещения и количество.
количество и смещения можно, допустим, рассчитать от размеров картинки.
точнее если дано смещение - то рассчитывается количество,
если количество- то расстояние.
так как-нибудь.- Изменено INFEL8 11 октября 2012 г. 13:23
11 октября 2012 г. 13:21 -
Понятно! Надо разбираться!11 октября 2012 г. 13:59
-
Еще кто–нибудь может чего посоветовать?
- Изменено georgushek 11 октября 2012 г. 14:49
11 октября 2012 г. 14:48 -
Еще кто–нибудь может чего посоветовать?
Если устроит сетка, нарисованная точками, а не линиями, то можно попробовать использовать метод DrawGrid класса ControlPaint.
void pictureBox1_Paint(object sender, PaintEventArgs e) { ControlPaint.DrawGrid(e.Graphics, e.ClipRectangle, new Size(10, 10), Color.White); }
Отмечу, что компонент PictureBox - довольно тяжёлый компонент, и его не стоит использовать для рисования, а только для работы с растровыми изображениями. Для рисования лучше использовать просто панель - Panel.
И не используйте столько восклицательных знаков. Пропадает всякое желание отвечать блондинке.
- Изменено Petalvik 11 октября 2012 г. 16:01
- Помечено в качестве ответа Abolmasov Dmitry 12 октября 2012 г. 8:35
11 октября 2012 г. 15:59 -
договорились!11 октября 2012 г. 18:36
-
спасибо! Извините за знаки это привычка.
- Изменено georgushek 11 октября 2012 г. 18:57
11 октября 2012 г. 18:53 -
Пожалуйста, не забывайте отмечать ответ или ответы, решающие вашу проблему. Спасибо.
Для связи [mail]
12 октября 2012 г. 8:36