none
рисование RRS feed

Ответы

  • Нет, приведенный выше пример на VB, там же написано.

    Если про C#, то создаете новый WinForms проект. На главную форму кидаете два TextBox (с именами tbX и tbY) и кнопку. В кнопку пишите вот такой обработчик:

    Point _prev = new Point(0, 0);
    
    private void button1_Click(object sender, EventArgs e)
    {
        Point newPoint = new Point(int.Parse(tbX.Text), int.Parse(tbY.Text));
        Graphics gr = Graphics.FromHwnd(this.Handle);
        gr.DrawLine(new Pen(Color.Black), _prev, newPoint);
        _prev = newPoint;
    }

    Работать будет вот так:

    В приведенном примере нет проверок на правильность данных, при сворачивании формы и разворачивании рисунок будет пропадать, но в том варианте как вы просили, работать будет.

    9 октября 2012 г. 5:29
    Отвечающий
  • 1. Поместить на форму PictureBox и заменить this на его имя:

    Graphics gr = Graphics.FromHwnd(pictureBox1.Handle);

    2. Для Windows Form, рисование поддерживает только целочисленные координаты.

    P.s. Коллега, мне кажется, или вы, вместо того, чтобы научится программировать, стремитесь, чтобы кто то за вас решал ваши задачи? Может имеет смысл что ни будь почитать про программирование на C#?

    • Помечено в качестве ответа georgushek 9 октября 2012 г. 7:16
    9 октября 2012 г. 7:00
    Отвечающий

Все ответы

  • Для VB.NET примерно так:

    На форме 4 текстбокса (координаты начальной и конечной точек), picturebox и button

    Imports System.Drawing.Graphics
    Imports System.Drawing.Drawing2D
    
    'В классе формы:
    Dim g As Graphics
    Dim Pt1 As Point
    Dim Pt2 As Point
    Dim p As Pen=New Pen(Color.Black,1) 'цвет линии черный, толщина 1 пиксель
    
    'В Form_Load:
    g=Graphics.FromImage(PictureBox1.Image) 'отрисовка в picturebox
    g.Clear(Color.While) 'цвет фона белый
    
    'В Button_Click:
    Pt1.X=TextBox1.Text
    Pt1.Y=TextBox2.Text
    Pt2.X=TextBox3.Text
    Pt2.Y=TextBox4.Text
    
    g.DrawLine(p,Pt1,Pt2)
    PictureBox1.Refresh()
    В кратце так. Надо подробней-пиши на мыло-отвечу.

    Alexandr_Smirnoff

    9 октября 2012 г. 0:10
  • А это c#?
    9 октября 2012 г. 5:06
  • Нет, приведенный выше пример на VB, там же написано.

    Если про C#, то создаете новый WinForms проект. На главную форму кидаете два TextBox (с именами tbX и tbY) и кнопку. В кнопку пишите вот такой обработчик:

    Point _prev = new Point(0, 0);
    
    private void button1_Click(object sender, EventArgs e)
    {
        Point newPoint = new Point(int.Parse(tbX.Text), int.Parse(tbY.Text));
        Graphics gr = Graphics.FromHwnd(this.Handle);
        gr.DrawLine(new Pen(Color.Black), _prev, newPoint);
        _prev = newPoint;
    }

    Работать будет вот так:

    В приведенном примере нет проверок на правильность данных, при сворачивании формы и разворачивании рисунок будет пропадать, но в том варианте как вы просили, работать будет.

    9 октября 2012 г. 5:29
    Отвечающий
  • ругается на знак равно! В описание типа! Там нашел ошибку! Зато он не понимает переменую tbX и tbY!

    • Изменено georgushek 9 октября 2012 г. 5:59
    9 октября 2012 г. 5:47
  • Не очень понятно, где у вас ругается. Запустите компиляцию, а потом сделайте принтскрин с ошибкой. Подскажу, что вы сделали не так.

    9 октября 2012 г. 5:54
    Отвечающий
  • Я так не могу потому что я вам пишу с планшета! А прогу пишу на ПК на котором нет интернета!

    tb-это textBox, ну как сделать чтобы он понимал tb?

    9 октября 2012 г. 6:10
  • Вы не внимательно читали, я же написал, что TextBox-ам надо дать имена. Имя визуальному компоненты можно дать выбрав его в дизайнере формы, нажав F4 и изменив имя в свойстве Name:

    9 октября 2012 г. 6:23
    Отвечающий
  • Он пишет памяти не достаточно! Извините я ошибся!
    • Изменено georgushek 9 октября 2012 г. 6:46
    9 октября 2012 г. 6:34
  • Коллега, кто он? И где пишет?

    Тот пример, который я вам показал, у меня работает, это раз. И два, там нет ничего такого, что может есть память...

    9 октября 2012 г. 6:44
    Отвечающий
  • Как мне это сделать для pictureBox? И чтобы числа были с плавающей точкой?
    9 октября 2012 г. 6:51
  • 1. Поместить на форму PictureBox и заменить this на его имя:

    Graphics gr = Graphics.FromHwnd(pictureBox1.Handle);

    2. Для Windows Form, рисование поддерживает только целочисленные координаты.

    P.s. Коллега, мне кажется, или вы, вместо того, чтобы научится программировать, стремитесь, чтобы кто то за вас решал ваши задачи? Может имеет смысл что ни будь почитать про программирование на C#?

    • Помечено в качестве ответа georgushek 9 октября 2012 г. 7:16
    9 октября 2012 г. 7:00
    Отвечающий
  • Может вы мне посоветуйте книжку по программированию в c#? Мне нужно вычисления и графика!
    9 октября 2012 г. 7:19
  • Можете начать с MSDN-а. Вот общие сведения про рисование в WinForms приложениях. Ну а про вычисления, это надо смотреть что вам необходимо.

    P.s. Помечать в качестве ответа, лучше все сообщения, которые его содержат. Тогда будет проще искать ответ тем, кто сталкнется с аналогичной проблемой в будущем.

    9 октября 2012 г. 7:35
    Отвечающий