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

Обновлено: 07.07.2024

Рисование простых линий на форме или элементах управления и печать этих линий

Листинг 5.1. Код для рисования прямой линии.

private void Form1_Paint(object sender, PaintEventArgs e)

//Задаем цвет и толщину пера:

Pen myPen = new Pen(Color.Black, 3);

e.Graphics.DrawLine(myPen, 10, 15, 100, 120);

//Высвобождаем память, выделенную объекту myPen:

Листинг 5.2. Код для рисования кривых линий.

private void Form1_Paint(object sender, PaintEventArgs e)

//Задаем цвет и толщину пера:

Pen myPen = new Pen(Color.Black, 3);

//Рисуем эллипс лица:

e.Graphics.DrawEllipse(myPen, 0, 0, 200, 220);

//Рисуем закрытый глаз как дугу:

e.Graphics.DrawArc(myPen, 35, 35, 35, 35, 180, -180);

//Рисуем открытый глаз как эллипс:

e.Graphics.DrawEllipse(myPen, 120, 35, 35, 35);

//Рисуем нос как линию (сплайн) Безье:

e.Graphics.DrawBezier(myPen, 100, 60, 120, 100,

//Рисуем рот как канонический сплайн:

Point[] apt = new Point[4];

apt[0] = new Point(60, 140);

apt[1] = new Point(140, 140);

apt[2] = new Point(100, 180);

apt[3] = new Point(60, 140);

e.Graphics.DrawCurve(myPen, apt, 0, 3, 0.9f);

//Высвобождаем память, выделенную объекту myPen:

private void button1_Click(object sender, EventArgs e)

//Передаем объекту printDialog1 информацию об объекте

//printDocument1 при помощи свойства Document:

//Выводим стандартную панель Print при помощи метода

//ShowDialog() для задания параметров печати

//и после щелчка OK на панели Print печатаем документ

//при помощи метода Print():

if (printDialog1.ShowDialog() == DialogResult.OK)

Листинг 5.4. Код на Visual Basic для печати изображения на принтере.

Private Sub Button3_Click(ByVal sender As System.Object, _

ByVal e As EventArgs) Handles Button3.Click

'Передаем объекту PrintDialog1 информацию об объекте

'PrintDocument1 при помощи свойства Document:

'Выводим панель Print при помощи функции ShowDialog

'для задания параметров и вызываем процедуру Print():

If PrintDialog1.ShowDialog() = DialogResult.OK Then

Листинг 5.5. Код на прежнем Visual C++ (2002-2004 годов) для печати.

System::Void button3_Click(System::Object * sender,

//Передаем объекту printDialog1 информацию об объекте

//printDocument1 при помощи свойства Document:

//Выводим стандартную панель Print при помощи метода

//ShowDialog() для задания параметров печати

//и печатаем документ после щелчка OK на панели Print

//при помощи метода Print():

if (printDialog1->ShowDialog() == DialogResult::OK)

Листинг 5.6. Код на новом Visual C++ 2005 для печати изображения.

System::Void button3_Click(System::Object^ sender,

//Передаем объекту printDialog1 информацию об объекте

//printDocument1 при помощи свойства Document:

//Выводим стандартную панель Print при помощи метода

//ShowDialog() для задания параметров печати

//и печатаем документ при помощи метода Print():

Если мы не желаем видеть перед печатью стандартную панель Print, то компонент PrintDialog нам не потребуется, а в шаблон обработчика щелчка по кнопке вместо кода на листинге 5.3 записываем только одну строку кода:

Проверяем в действии созданную нами программу для печати на принтере любых изображений. Для этого получаем на экране монитора (по описанной выше методике) заданное изображение и щелкаем кнопку Print.

Появляется стандартная панель Print (рис. 5.5), на которой мы выбираем (или оставляем по умолчанию) принтер и задаем параметры печати. Например, можно изменить ориентацию печати и вместо Portrait (Портрет) выбрать переключатель Landscape (Ландшафт). После щелчка кнопки Печать (Print) или OK принтер печатает только одно изображение без формы и элементов управления.


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

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


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

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

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

Решение

Добавлено через 53 секунды
Чтобы рисовать в ограниченном пространстве используй элемент Panel.

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

Graphics.DrawLine рисует линию
добавить нужно компонент поддерживающий изображения (panel, pictureBox и т.п.) kirill29, а как вызывается метод Form1_Paint? где? В окне Properties вверху щелкните мышкой по знаку молнии(события), в списке найдете Paint, и двойным щелчком по соседнем пустому полю. Тем самым создасться данное событие. отлично! Всем спасибо за оперативный ответ!
конечно последнее могла бы и сама догадаться попробуй использовать using чтобы не нужно было освобождать ресурсы вручную

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

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


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

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

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

Нужно нарисовать линию в PictureBox. Причём нельзя пользоваться событием OnPaint объекта PictureBox из-за специфических условий решаемой задачи.

Я этот код нашёл в нижке. Он не работает. Мне собственно понятно почему: не указано где надо рисовать. Только как указать что надо рисовать в PictureBox и как там нарисовать эту линию при клике я не знаю. Ещё раз напомню что не надо пользоваться событием Paint объекта PictureBox. Без него надо сделать. Подскажите плиз __________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Как нарисовать линию в PictureBox
Здравствуйте, подскажите, не могу найти инфу, о том как нарисовать в PictureBox линию Нужно, чтобы.


Вывести линию в PictureBox
Здравствуйте, почему данный код не выводит линию в pictureBox1? using System; using.


Стереть нарисованную линию в PictureBox
мне надо сделать вращении линии. Хочу реализовать это таким способом: рисую новую линию, а старую.


Нарисовать линию на Panel
На форме находится панель, требуется нарисовать на панельке хотя бы линию в функции пейт.

Задача. Провести рисование после клика по кнопке. Только ПОСЛЕ КЛИКА.
Почему у меня с if не работает, а без if работает. почему условие не выполняется?

Решение

Всё выполняется, просто Вы не обновляете pictureBox1:


Нарисовать градиентную линию
Не могу придумать прорисовку линии их двух цветов, т.е от одного оттенка плавный переход до.

Нарисовать и переместить линию
Люди добрые помогите! Разработать приложение позволяющее с помощью командных кнопок (вверх вниз.

Не могу нарисовать линию
Вот код private void Form1_Paint(object sender, PaintEventArgs e) < Pen pen.


Нарисовать линию в picture_box
Подскажите, пожалуйста, пытаюсь нарисовать линию private void pic_move(object sender.

Нужно нарисовать линию в picturbox
Проблема в том. есть точка А(0,0), нужно найти точку В, если знаем только угол. проще говоря нужно.

БлогNot. Visual C++/CLI: рисуем линию на PictureBox "как в Paint"

Visual C++/CLI: рисуем линию на PictureBox "как в Paint"

То есть, при движении мыши с зажатой кнопкой линия должна динамически обновляться, а при отпускании кнопки добавляться на существующий рисунок. Так как PictureBox удобно сохранять и легко снабдить полосами прокрутки, будем рисовать на ней. Компонента может быть частью интерфейса приложения как в этой заметке или растянутой на всю форму. Проект создан как приложение Windows Forms, код проверен в Visual Studio 2015.

Для самой формы нам понадобится запрограммировать только событие Load , где мы инициализируем всё, что нужно - создадим рисунок по текущим размерам PictureBox , назначим его компоненте, создадим перо и выставим в "ложь" флажок:

Ещё лучше было создать рисунок размером с клиентскую часть окна формы:

Всё остальное запрограммируем в событиях PictureBox . На нажатие кнопки мыши будем включать флажок и запоминать место клика p1 :

На отпускание кнопки получим координаты второй точки p2 и соединим её с первой, проведя линию на образе Img1 . В реальном коде можно добавлять точки в какой-то контейнер, например, в список как здесь.

На перемещение мыши обработка будет немного хитрей. Если кнопка не зажата, ничего делать не нужно, а в противном случае будем проводить текущую линию на копии рисунка Img2 , созданной из Img1 , чтобы не получилось "веера" из линий при перемещении мыши с зажатой кнопкой. Img2 всё равно придётся временно назначить рисунком для PictureBox , чтобы линия была видна в процессе движения мыши.

Это всё, приложение можно собирать.

P.S. Здесь у нас все координаты были "внутри PictureBox " и получались непосредственно из аргумента MouseEventArgs обработчика события. По-другому можно делать так:

К сожалению, из-за плохой "очистки мусора" (а мы создаём каждый раз временную копию рисунка при движении мыши с зажатой кнопкой) такое приложение может быстро пожирать память.

Можно, конечно, ввести ещё список "тип фигуры" и рисовать другие объекты.

Если хотим рисовать просто карандашом "по точкам", можно применять и подход с таймером (код для той же формы):

Читайте также: