С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/120: Рейтинг темы: голосов - 120, средняя оценка - 4.63
7 / 5 / 4
Регистрация: 02.06.2012
Сообщений: 248

Как рисовать в Windows Forms?

10.09.2014, 17:53. Показов 24062. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я проверил все варианты, начиная от Paint Event до CreateGraphics.
Думаю мне не стоит объяснять почему они не работают.
Просто скажите, какой способ САМЫЙ верный, чтобы нарисовать к примеру квадрат?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.09.2014, 17:53
Ответы с готовыми решениями:

Как можно рисовать на форме Windows Forms с помощью обычного GDI
Здравствуйте! Как можно рисовать на форме Windows Forms с помощью обычного GDI. Создавал класс который рисует на Консоли Win32...

Windows.Forms - Процедуры, цикл for и System.Windows.Forms.Button
Доброго времени суток. Есть WinForms программа: ... private ClickedButtonId, ClickedButtonX, ClickedButtonY:Integer; ...

Как рисовать текст на RGBA картинке ? (Windows)
Подскажите как написать текст с выбранным шрифтом на картинке RGBA? Или получить из текста с выбранным шрифтом картинку в RGBA формате...

6
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,095
10.09.2014, 18:02
Цитата Сообщение от Ziya Посмотреть сообщение
Я проверил все варианты, начиная от Paint Event до CreateGraphics.
Думаю мне не стоит объяснять почему они не работают.
Думаю стоит

Цитата Сообщение от Ziya Посмотреть сообщение
нарисовать к примеру квадрат
C#
1
2
3
4
5
6
7
8
9
10
11
12
 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            e.Graphics.DrawRectangle(Pens.Red, 20, 20, 50, 50);
        }
}
0
7 / 5 / 4
Регистрация: 02.06.2012
Сообщений: 248
10.09.2014, 19:18  [ТС]
Цитата Сообщение от nedel Посмотреть сообщение
Думаю стоит
Проблем до фига! К примеру пару проблем:
1. Я не могу объявить OnPaint в другом классе.
2. Я не могу добавить Paint Event, когда DoubleBuffered = true, когда я делаю это с MyPanel Class.
3. Я не могу добавить второй Paint Event и когда я удаляю первый Paint Event, то рисунок исчезает.

Я не могу найти ответ на msdn и тут, это вообще возможно рисовать в C#? Или все эти побрикушки вроде Graphics сделали для роскоши? Если возможно, прошу написать один единйственный универсальный код, вы можете меня спасти.
0
Заблокирован
10.09.2014, 20:01
Зачем рисовать на форме, для этого есть PictureBox.

Как вариант:
1. Создаем рисунок в PictureBox (это нужно сделать только 1 раз при создании формы, или чтобы удалить старый рисунок)
pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
2. Рисуем (например, в событии Shown, но можно и просто по кнопке и т.д.)
using (var g = Graphics.FromImage(pictureBox1.Image))
{
g.DrawLine(Pens.Blue, 0, 0, 200, 300);
}
0
290 / 271 / 107
Регистрация: 10.06.2011
Сообщений: 696
10.09.2014, 20:28
Рисование в picturebox прямоугольников один на другом
0
7 / 5 / 4
Регистрация: 02.06.2012
Сообщений: 248
10.09.2014, 21:55  [ТС]
Я нашёл способ, вроде как вы предложили:

C#
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
51
52
53
54
55
56
57
58
59
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace _123
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        MyPanel mypanel1;
        Bitmap bitmap1;
 
        private void button1_Click(object sender, EventArgs e)
        {
            mypanel1 = new MyPanel();
            mypanel1.Parent = this;
            mypanel1.Location = new Point(10, 10);
            mypanel1.Width = 50;
            mypanel1.Height = 50;
            mypanel1.BackColor = Color.Black;
 
            bitmap1 = new Bitmap(mypanel1.Width, mypanel1.Height);
 
            mypanel1.Paint += Draw;
        }
 
        private void Draw(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Pen p = new Pen(Color.White, 1);
            g.DrawImage(bitmap1, 0, 0, bitmap1.Width, bitmap1.Height);
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Graphics g = Graphics.FromImage(bitmap1);
            Pen p = new Pen(Color.White, 1);
            g.DrawRectangle(p, 10, 10, 10, 10);
            mypanel1.Invalidate();
        }
    }
 
    public class MyPanel : Panel
    {
        public MyPanel()
        {
            this.DoubleBuffered = true;
        }
    }
}
Можете отметить мой ответ лучшим.
1
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
12.09.2014, 16:14
Может стоит посмотреть в сторону directX?!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.09.2014, 16:14
Помогаю со студенческими работами здесь

Как переделать Windows Forms приложение в Windows Service с UI?
Здравствуйте, уважаемые посетители форума! Вопрос такой. У меня есть приложение C# Win Forms с интерфейсом. Как из него сделать...

Код для Windows Forms не работает в Web Forms?
В том году я делал лабораторки по Winforms. Естественно, они все у меня сохранились, и я полез в их код, вспоминать былое, так сказать,...

Как разобратся с Windows Forms
Есть очень простое приложение в консоли. Никак не могу понять к сделать все тоже самое в Windows Forms using System; using...

Перенести расчет расстояния Левенштейна в Windows Forms
using System; namespace _123 { class Program { static int Minimum(int a, int b, int c) => (a = a < b ? a : b)...

Как подключить Windows.Forms
using System.Windows.Forms; VS2013 ругается говорит что Forms не существует в namespace 'System.Windows' Разве в VS2013 нет этой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru