Перейти к содержимому

Как нарисовать линию в c

  • автор:

Практическое руководство. Рисование линии в Windows Forms

В этом примере на форме рисуется линия. Как правило, при рисовании на форме вы обрабатываете событие формы Paint и выполняете рисование с помощью свойства Graphics объекта PaintEventArgs, как показано в этом примере

Пример

Pen pen = new Pen(Color.FromArgb(255, 0, 0, 0)); e.Graphics.DrawLine(pen, 20, 10, 300, 100); 
Dim pen As New Pen(Color.FromArgb(255, 0, 0, 0)) e.Graphics.DrawLine(pen, 20, 10, 300, 100) 

Компиляция кода

Предыдущий пример предназначен для работы с Windows Forms, и для него необходим объект PaintEventArgs e , передаваемый в качестве параметра обработчику событий Paint.

Отказоустойчивость

Всегда следует вызывать Dispose для любых объектов, использующих системные ресурсы, например Pen.

См. также

  • DrawLine
  • OnPaint
  • Приступая к программированию графики
  • Рисование линий и фигур с помощью пера
  • Объекты Graphics и Drawing в Windows Forms

Совместная работа с нами на GitHub

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

Как нарисовать линию?

Author24 — интернет-сервис помощи студентам

Мне необходимо как можно более простым способом (без всяких там навороченных графических библиотек) нарисовать линию — соединить две точки с заданными координатами. Подскажите пожалуйста, во-первых, какой компонент нужно добавить на форму, чтобы в нем рисовалось и во вторых, как ее нарисовать?

Лучшие ответы ( 1 )

Здесь вы можете заказать любую студенческую или школьную работу.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

нарисовать линию на панели
вот я открыл панель курса валют как мне нарисовать линию из одной точки в другую

Нарисовать линию по нажатию на панель
int peremX1; int peremY1; int peremX2; int peremY2; private.

GDI+ нарисовать моргающую линию
Как в GDI+ нарисовать моргающую линию?

Как нарисовать пунктирную линию?
Приветствую всех! Подскажите, пожалуйста, почему у меня не получается пунктирная линия (2.

2096 / 1261 / 171
Регистрация: 01.02.2009
Сообщений: 2,842
Рисовать можно прямо на форме. для этого используется событие формы Paint.
Регистрация: 20.04.2010
Сообщений: 29

мм, ну а если мне нужно ограничить область, в которой будет рисоваться что то? то есть весь рисунок должен в определенном прямоугольнике быть, или это надо высчитать координаты этого прямоугольника на форме и от них отталкиваться? а ничего попроще нету?

2096 / 1261 / 171
Регистрация: 01.02.2009
Сообщений: 2,842

Лучший ответ

Сообщение было отмечено как решение

Решение

1 2 3 4 5 6 7 8 9
private void Form1_Paint(object sender, PaintEventArgs e) { Graphics gr = e.Graphics; Pen p = new Pen(Color.Blue, 5);// цвет линии и ширина Point p1 = new Point(5,10);// первая точка Point p2 = new Point(40,100);// вторая точка gr.DrawLine(p, p1, p2);// рисуем линию gr.Dispose();// освобождаем все ресурсы, связанные с отрисовкой }

Добавлено через 53 секунды
Чтобы рисовать в ограниченном пространстве используй элемент Panel.
Регистрация: 20.04.2010
Сообщений: 29

Возможно, мой вопрос звучит странно, но с графикой я работала только на c++ Builder и там можно было добавить на форму компонент для рисования, и левый верхний угол этого компонента был с координатами 0,0 и правый нижний соответственно вычислялся в зависимости от размера.. В .net есть что то подобное?

Добавлено через 1 минуту
ага, пока писала уже ответили

6046 / 3455 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2

Graphics.DrawLine рисует линию
добавить нужно компонент поддерживающий изображения (panel, pictureBox и т.п.)

Регистрация: 20.04.2010
Сообщений: 29
kirill29, а как вызывается метод Form1_Paint? где?
2096 / 1261 / 171
Регистрация: 01.02.2009
Сообщений: 2,842

В окне Properties вверху щелкните мышкой по знаку молнии(события), в списке найдете Paint, и двойным щелчком по соседнем пустому полю. Тем самым создасться данное событие.

Регистрация: 20.04.2010
Сообщений: 29
отлично! Всем спасибо за оперативный ответ!
конечно последнее могла бы и сама догадаться
Регистрация: 23.09.2015
Сообщений: 6

1 2 3 4 5 6 7 8 9
private void Form1_Paint(object sender, PaintEventArgs e) { using (Graphics gr = e.Graphics) { Pen p = new Pen(Color.Blue, 5);// цвет линии и ширина Point p1 = new Point(5,10);// первая точка Point p2 = new Point(40,100);// вторая точка gr.DrawLine(p, p1, p2);// рисуем линию } }

попробуй использовать using чтобы не нужно было освобождать ресурсы вручную
Регистрация: 06.03.2023
Сообщений: 1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
dx := x2 - x1; dy := y2 - y1; if ((abs(dx) > abs(dy)) and (x2 < x1)) or ((abs(dx) = abs(dy)) and (y2 < y1)) then begin x := x1; x1 := x2; x2 := x; y := y1; y1 := y2; y2 := y; end; dx := x2 - x1; dy := y2 - y1; stp := 1; putpixel(x1, y1, clblack); if (abs(dx) > abs(dy)) then begin if (dy < 0) then begin stp := -1; dy := -dy; end; d := (dy * 2) - dx; d1 := dy * 2; d2 := (dy - dx) * 2; y := y1; for x := x1 + 1 to x2 do begin if (d > 0) then begin y := y + stp; d := d + d2; end else d := d + d1; putpixel(x, y, clblack); end; end else begin if (dx < 0) then begin stp := -1; dx := -dx; end; d := (dx * 2) - dy; d1 := dx * 2; d2 := (dx - dy) * 2; x := x1; for y := y1 + 1 to y2 do begin if (d > 0) then begin x := x + stp; d := d + d2; end else d:=d+d1; putpixel(x, y, clblack); end; end;

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как нарисовать на форме линию?
Приветствую! Можно ли добавить в область "Toolbox" элемент управления для рисования линии? Что я.

Как нарисовать пунктирную линию
Как в С# нарисовать пунктирную линию??

Как нарисовать линию на изображении
Есть рисунок (200х200), как можно нарисовать на нем линию? Dim imnn As Bitmap . imnn =.

Как нарисовать линию в форме?
как нарисовать линию в windows form application c++. пробовал та: . LineTo(x,y); — не.

Как нарисовать линию на форме?
Казалось бы простой вопрос, но я начинающий. Хэлп плиз)))

Как нарисовать непрерывную линию
При наведении мышки на pictureBox рисуется прерывистая линия ,т.е. точками линия рисуется.

Или воспользуйтесь поиском по форуму:

Как начертить линию

В этом примере показано, как рисовать линии с помощью элемента Line.

Чтобы нарисовать линию, создайте элемент Line. Используйте его свойства X1 и Y1, чтобы задать начальную точку, и свойства X2 и Y2, чтобы задать конечную точку. Наконец, задайте его Stroke и StrokeThickness, так как линия без штриха невидима.

Задание элемента Fill для линии не оказывает никакого эффекта, так как линия не имеет внутренней части.

В следующем примере рисуются три линии внутри элемента Canvas.

Пример

Этот пример является частью большего примера; полный пример см. в разделе Примеры элементов фигур.

См. также

  • Line
  • Пример элементов фигуры

Совместная работа с нами на GitHub

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

Как нарисовать линию в c

Я точно не могу сказать, что это за DETECT, которым инициализируется переменная grdriver, но будем считать, что это так мы инициализируем драйвер (во всяком случае, так говорит сама строка кода). После инициализации драйвера мы запускаем графический режим, после чего используем функцию рисования линии. Функция принимая четыре точки и показывает нам линию на экране.

При работе в dosbox есть один нюанс: чтобы окно не закрывалось преждевременно, нужно как-то делать задержку. Я для задержки использую cin.get() . Если задержку сделать после прекращения работы графического режима, то на экране ничего не будет. Надо задержку делать во время работы графического режима, не потом.

Нарисовать-то нарисовали, но обычно люди проверяют код на возможное возникновение ошибок, поэтому добавим проверку. Проверку нужно запускать, разумеется, сразу после входа в графический режим:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *