Меню Рубрики

Рисование в windows forms

Рисование в windows forms

Уроки Windows Forms C++/C#

Рисование линий в PictureBox MVS C++/C#

В этом уроке вы приступите к изучению базовых приёмов рисования в «PictureBox». И в данном уроке будет рассмотрено то, как нарисовать линию заданной длины, цвета и в заданном месте поля «PictureBox». Для этого нам понадобятся: 4 «textBox», 1 «button», и конечно же «PictureBox». Примерный вид программы:

То, как изменить цвет фона элемента (“PictureBox”) рассматривается в этом уроке. В “textBox”ы мы будем записывать начальное и конечное значение координат поля рисования: две координаты – одна точка, ещё две координаты – ещё одна точка, которая соединяется с предыдущей, образуя отрезок, заданного в коде программы цвета. Значение каждой координаты, получаемое из текстового поля, мы будем конвертировать в «int»Convert::ToInt32(textBox1->Text); А для хранения значения создаётся массив, его нужно объявить в верху программы: int m_p[4];

Ну а теперь, пожалуй, приступим к коду самой программы, который вы можете видеть ниже. В нём, как видите, вызвано событие «PictureBox1_Paint», о том, как вызвать событие элемента рассматривается в “этом уроке”. В событии «button1_Click» есть строка — pictureBox1->Refresh(); с помощью неё каждый раз, когда пользователь будет вводить новые координаты, изображение в «PictureBox» будет заново прорисовываться.

#pragma endregion private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) < this->Text = «Рисуем Линию»; button1->Text = «Рисовать»; > private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) < m_p[1] = Convert::ToInt32(textBox1->Text); m_p[2] = Convert::ToInt32(textBox2->Text); m_p[3] = Convert::ToInt32(textBox3->Text); m_p[4] = Convert::ToInt32(textBox4->Text); pictureBox1->Refresh(); > private: System::Void pictureBox1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) < // Рисуем линию e->Graphics->DrawLine(System::Drawing::Pens::Green, m_p[1], m_p[2], m_p[3], m_p[4]); > >; >

Результат: Следующий урок >>

Источник

Рисование дерева в Windows Forms

у меня проблема с AutoScroll и рисованием (суть вопроса после кода). Я вот по такому коду рисую AVL- дерево:

Проблема в том, что если дерево не влезает в treePanel, то нужен Scroll рисунка, но как его реализовать, я не знаю. Свойство AutoScroll у treePanel работает только если я вместо рисования кругов рисую Label-метки, но даже в этом случае рисунок как-то странно съезжает, т.е. проблему это не решает (наверное)

Помогите, пожалуйста кодом или советом!)

1-изображение — это нужно устранить 2-изображение — А вот так пока получается, но нужно , чтобы можно было скроллить После ответа ниже — понял, что делал неправильно, код будет примерно следующий (линии я пока не нарисовал, но скроллящееся дерево без соединительных линий — уже есть) Вот обновлённый код:

1 ответ 1

Для начала проясним ошибочное предположение: нарисованное изображение не является контентом, с точки зрения ScrolableControl , от которого наследуются все контролы, которые поддерживают скроллинг. Таким образом, свойство AutoScroll не может вам помочь, так как учитывает только вложенные контролы. Даже принудительная ручная активация скролла вам в данном случае не поможет.

Какие есть варианты? Основных три. Остальные — производные.

Так как скролл учитывает только контролы, то строить изображение с помощью кастомных контролов. Через свойство Control.Region можно придать контролу любую форму (вершина, ребро, да хоть весь граф).

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

Берем скрол полностью в свои руки, исключив все автоматические рюшечки. Фактически, мы просто добавляем полосы скролла и с их помощью управляем положением изображения вручную. Для этого изображение целиком должно быть представлено объектом GraphicsPath , для которого можно задать позиционирование при отрисовке.

Если нужна только картинка, я бы предпочел последний вариант. Для интерактива — без вариантов первый. Второй — как переходный от вашего решения к любому более специализированному.

Источник

Рисование на форме из класса

Разбираюсь в классах c#. Хочу сделать класс, в котором был бы метод, рисующий какой-либо объект на форме, допустим, прямоугольник. Но я не очень понимаю, как в классе задавть область рисования. Хочу потом на коде формы просто вызывать метод этого класса, что-то по типу:

Набросал класс, но как указать область рисования?

Рисование на форме из другого класса
В общем вопрос такой: Имеется форма с названием MainForm, также имеется класс GameObject.

Рисование в форме, передача методов класса классу формы используя делегаты
Всем доброй ночи!) Решив данный вопрос , решится большая задача, суть которой заключается в том.

Рисование в форме
На форме TextBox1,TextBox2,TextBox3, кнопка, и поле для рисования. По введенным коэффициента.

Рисование на форме
Привет, помогите пожалуйста понять почему не выводится прямоугольник на форму при запуске.

В метод для отрисовки передаете ссылку на Graphics

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

Рисование в форме
Добрый день. Можно ли в C# сделать аналогично как в FreePascal.

Рисование на Форме
Как нарисовать радиальный двухцветный градиент на всей поверхности формы?

Попиксельное рисование на форме
Необходимо рисовать изображение на форме (или в отдельном окне) по пикселям. Чтобы в любой момент.

Рисование фрактала на форме
Дали задание нарисовать фрактал у виде папоротника. Вот собственно сам скрин фрактала который.

Источник

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

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

  • Рисовалка для windows mobile
  • Рингтоны windows mobile 10
  • Рингтон производитель на windows
  • Римские цифры в windows
  • Ридер djvu для windows