7 / 5 / 4
Регистрация: 02.06.2012
Сообщений: 248
1

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

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

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

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

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

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

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

6
1119 / 854 / 499
Регистрация: 09.04.2014
Сообщений: 2,021
10.09.2014, 18:02 2
Цитата Сообщение от 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  [ТС] 3
Цитата Сообщение от nedel Посмотреть сообщение
Думаю стоит
Проблем до фига! К примеру пару проблем:
1. Я не могу объявить OnPaint в другом классе.
2. Я не могу добавить Paint Event, когда DoubleBuffered = true, когда я делаю это с MyPanel Class.
3. Я не могу добавить второй Paint Event и когда я удаляю первый Paint Event, то рисунок исчезает.

Я не могу найти ответ на msdn и тут, это вообще возможно рисовать в C#? Или все эти побрикушки вроде Graphics сделали для роскоши? Если возможно, прошу написать один единйственный универсальный код, вы можете меня спасти.
0
Заблокирован
10.09.2014, 20:01 4
Зачем рисовать на форме, для этого есть 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 5
Рисование в picturebox прямоугольников один на другом
0
7 / 5 / 4
Регистрация: 02.06.2012
Сообщений: 248
10.09.2014, 21:55  [ТС] 6
Я нашёл способ, вроде как вы предложили:

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 7
Может стоит посмотреть в сторону directX?!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.09.2014, 16:14
Помогаю со студенческими работами здесь

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

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

Как сделать в Windows Forms
using System; namespace _123 { class Program { static int Minimum(int a, int...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru