none
нарисовать сетку поверх рисунка RRS feed

  • Вопрос

  • Подскажите пожалуйста! Я нарисовал сетку в 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