Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Маргарита18
0 / 0 / 0
Регистрация: 18.12.2018
Сообщений: 14
1

Рисования снежинок

14.06.2019, 15:26. Просмотров 272. Ответов 10
Метки нет (Все метки)

Приложение для рисования снежинок: цвет формы - синий; при щелчке мыши на этом месте должна появляться снежинка белого цвета с 8-ю лучиками.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2019, 15:26
Ответы с готовыми решениями:

основы рисования
помогите пожалуйста, уже перерыл тонну примеров и литературы, но везде все одно и тоже(пишут куски...

Пределы области рисования
Подскажите, пожалуйста, при рисовании графических объектов (окружность, например) как лучше...

Слои для рисования
Всем привет! Подскажите, пожалуйста, кто знает. 1. Есть в дотнете что-нибудь похожее на слои...

AutoScroll в форме рисования
Пишем на практике свой аналог пэинта, возникла проблема с автоскроллом. Устанавливаю его True, при...

Библиотеки для рисования(?)
Добрейший вечерочек, может уже кто-нибудь интересовался вопросом: а есть ли библиотеки для шарпа в...

10
RunningMan
182 / 152 / 70
Регистрация: 12.04.2017
Сообщений: 689
Записей в блоге: 2
14.06.2019, 16:25 2
Что вы хотели этим сказать?
0
afront
1161 / 1020 / 758
Регистрация: 29.02.2016
Сообщений: 3,251
14.06.2019, 16:55 3
http://netcode.ru/dotnet/?artID=7191
0
afront
1161 / 1020 / 758
Регистрация: 29.02.2016
Сообщений: 3,251
14.06.2019, 19:49 4
проект в WPF
0
Вложения
Тип файла: 7z WpfApp1.7z (10.4 Кб, 4 просмотров)
14.06.2019, 19:49
Веселый
62 / 68 / 43
Регистрация: 12.10.2013
Сообщений: 979
14.06.2019, 21:08 5
afront,что то ваш пример 7.Z уж очень смахивает на банальную демонстрацию рекурсии!!!
0
afront
1161 / 1020 / 758
Регистрация: 29.02.2016
Сообщений: 3,251
14.06.2019, 21:12 6
Веселый, вы что то перепутали, вроде как снежинку рисует
0
Веселый
62 / 68 / 43
Регистрация: 12.10.2013
Сообщений: 979
14.06.2019, 22:22 7
Может так :

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
namespace Copy_Paste
{
    public partial class Form1 : Form
    {
        PictureBox pictureBox;
        List<PictureBox> pictureBoxList;
        public Form1()
        {
            InitializeComponent();    
            pictureBoxList = new List<PictureBox>(100);
        }
        int numbCopy = 1;
        private void Form1_MouseClick(object sender, MouseEventArgs e)
        {
            textBox1.Text = numbCopy.ToString();
            switch (numbCopy)
            {
                case 1: pictureBox = new PictureBox(); pictureBox.Location = new Point(e.Location.X, e.Location.Y); pictureBox.Image = new Bitmap(Properties.Resources.снежка); pictureBoxList.Add(pictureBox);
                    break;
                case 2: pictureBox = new PictureBox(); pictureBox.Location = new Point(e.Location.X, e.Location.Y); pictureBox.Image = new Bitmap(Properties.Resources.снежка); pictureBoxList.Add(pictureBox); numbCopy = 1;
                    break;
            }
            foreach (PictureBox pictureBox in pictureBoxList)
            {
                this.Controls.Add(pictureBox);
            }
           numbCopy++;
        }
    }
0
Веселый
62 / 68 / 43
Регистрация: 12.10.2013
Сообщений: 979
14.06.2019, 22:30 8
Типа так!
0
Миниатюры
Рисования снежинок  
8Observer8
2763 / 1714 / 303
Регистрация: 05.10.2013
Сообщений: 5,281
Записей в блоге: 95
15.06.2019, 19:31 9
SnowflakesForMargarita18_WinFormsOpenGL11.zip

Form1.cs

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using OpenTK;
using OpenTK.Graphics;
using OpenTK.Graphics.OpenGL;
 
namespace SnowflakesForMargarita18
{
    public partial class Form1 : Form
    {
        private GLControl _glControl;
        private List<Vector2> _snowflakesPositions = new List<Vector2>();
 
        public Form1()
        {
            InitializeComponent();
 
            _glControl = new GLControl();
            _glControl.Dock = DockStyle.Fill;
            _glControl.Load += GLControl_Load;
            _glControl.Paint += GLControl_Paint;
            _glControl.MouseDown += GLControl_MouseDown;
            Controls.Add(_glControl);
        }
 
        private void GLControl_MouseDown(object sender, MouseEventArgs e)
        {
            _snowflakesPositions.Add(new Vector2(e.X, e.Y));
            _glControl.Invalidate();
        }
 
        private void GLControl_Load(object sender, EventArgs e)
        {
            GL.ClearColor(Color4.DodgerBlue);
            Setup2DGraphics(_glControl.Width, _glControl.Height);
        }
 
        private void GLControl_Paint(object sender, PaintEventArgs e)
        {
            GL.Clear(ClearBufferMask.ColorBufferBit);
 
            foreach (var pos in _snowflakesPositions)
            {
                DrawSnowflake(new Vector2(pos.X, pos.Y), 10f);
            }
 
            _glControl.SwapBuffers();
        }
 
        private void DrawSnowflake(Vector2 pos, float size)
        {
            GL.LoadIdentity();
            GL.Color3(1f, 1f, 1f);
            GL.Begin(PrimitiveType.Triangles);
            {
                GL.Vertex2(pos.X, pos.Y + size);
                GL.Vertex2(pos.X - size, pos.Y - size);
                GL.Vertex2(pos.X + size, pos.Y - size);
            }
            GL.End();
        }
 
        private void Setup2DGraphics(float width, float height)
        {
            GL.MatrixMode(MatrixMode.Projection);
            GL.LoadIdentity();
            GL.Ortho(0f, width, height, 0f, 10f, -10f);
            GL.MatrixMode(MatrixMode.Modelview);
            GL.LoadIdentity();
        }
    }
}


Название: SnowflakesForMargarita18_WinFormsOpenGL11.gif
Просмотров: 16

Размер: 79.1 Кб
0
Tarasov_Evgeniy
0 / 0 / 0
Регистрация: 11.06.2019
Сообщений: 2
15.06.2019, 19:53 10
И для чего?
0
8Observer8
2763 / 1714 / 303
Регистрация: 05.10.2013
Сообщений: 5,281
Записей в блоге: 95
15.06.2019, 22:58 11
Цитата Сообщение от Маргарита18 Посмотреть сообщение
при щелчке мыши на этом месте должна появляться снежинка белого цвета с 8-ю лучиками.
В задании ничего не сказано о том, что снежинку нужно рисовать программно. Значит, можно найти снежинку с 8-ю лучиками в интернете, что я и сделал. Это здорово сэкономило времени. Но, конечно, рисование программно - отличное математическое упражнение. Может на словах было сказано, что требуется рисовать снежинку программно, но пока с помощью картинки:

SnowflakesForMargarita18_WinFormsOpenGL11.zip

Form1.cs

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
using System;
using System.Diagnostics;
using System.Collections.Generic;
using System.Windows.Forms;
using OpenTK;
using OpenTK.Graphics;
using OpenTK.Graphics.OpenGL;
using System.Drawing;
using System.Drawing.Imaging;
 
namespace SnowflakesForMargarita18
{
    public partial class Form1 : Form
    {
        private GLControl _glControl;
        private List<Vector2> _snowflakesPositions = new List<Vector2>();
 
        public Form1()
        {
            InitializeComponent();
 
            _glControl = new GLControl();
            _glControl.Dock = DockStyle.Fill;
            _glControl.Load += GLControl_Load;
            _glControl.Paint += GLControl_Paint;
            _glControl.MouseDown += GLControl_MouseDown;
            Controls.Add(_glControl);
        }
 
        private void GLControl_MouseDown(object sender, MouseEventArgs e)
        {
            _snowflakesPositions.Add(new Vector2(e.X, e.Y));
            _glControl.Invalidate();
        }
 
        private void GLControl_Load(object sender, EventArgs e)
        {
            GL.ClearColor(Color4.DodgerBlue);
            Setup2DGraphics(_glControl.Width, _glControl.Height);
 
            GL.Enable(EnableCap.Texture2D);
            GL.Enable(EnableCap.Blend);
            GL.BlendFunc(BlendingFactor.SrcAlpha, BlendingFactor.OneMinusSrcAlpha);
            LoadTexture("Textures/snowflake_64x64.png");
        }
 
        private void GLControl_Paint(object sender, PaintEventArgs e)
        {
            GL.Clear(ClearBufferMask.ColorBufferBit);
 
            foreach (var pos in _snowflakesPositions)
            {
                DrawSnowflake(new Vector2(pos.X, pos.Y), 64f);
            }
 
            _glControl.SwapBuffers();
        }
 
        private void DrawSnowflake(Vector2 pos, float size)
        {
            float halfSize = size / 2f;
 
            GL.Begin(PrimitiveType.Quads);
            {
                GL.TexCoord2(0f, 0f);
                GL.Vertex2(pos.X - halfSize, pos.Y - halfSize);
 
                GL.TexCoord2(0f, 1f);
                GL.Vertex2(pos.X - halfSize, pos.Y + halfSize);
 
                GL.TexCoord2(1f, 1f);
                GL.Vertex2(pos.X + halfSize, pos.Y + halfSize);
 
                GL.TexCoord2(1f, 0f);
                GL.Vertex2(pos.X + halfSize, pos.Y - halfSize);
            }
            GL.End();
        }
 
        private int LoadTexture(string path)
        {
            Bitmap image = null;
            try
            {
                image = new Bitmap(path);
            }
            catch(Exception)
            {
                Debug.Assert(false, "Failed to open the file: " + path);
                return -1;
            }
            int texture = GL.GenTexture();
            GL.BindTexture(TextureTarget.Texture2D, texture);
            Rectangle rect = new Rectangle(0, 0, image.Width, image.Height);
            BitmapData data = image.LockBits(
                rect, ImageLockMode.ReadOnly,
                System.Drawing.Imaging.PixelFormat.Format32bppRgb);
            GL.TexImage2D(TextureTarget.Texture2D, 0,
                PixelInternalFormat.Rgba, image.Width, image.Height,
                0, OpenTK.Graphics.OpenGL.PixelFormat.Bgra,
                PixelType.UnsignedByte, data.Scan0);
            GL.GenerateMipmap(GenerateMipmapTarget.Texture2D);
            image.UnlockBits(data);
            return texture;
        }
 
        private void Setup2DGraphics(float width, float height)
        {
            GL.MatrixMode(MatrixMode.Projection);
            GL.LoadIdentity();
            GL.Ortho(0f, width, height, 0f, 10f, -10f);
            GL.MatrixMode(MatrixMode.Modelview);
            GL.LoadIdentity();
        }
    }
}


Название: SnowflakesForMargarita18_WinFormsOpenGL11_Texture.gif
Просмотров: 11

Размер: 121.7 Кб
0
15.06.2019, 22:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2019, 22:58

Анимация рисования линии
Есть код: public void ButtonCreate(int N) { int posY =...

Ограничить область рисования
помогите как сделать так чтобы линия не выходила за приделы облости рисования

Что передать в функцию рисования?
У меня есть класс, в котором есть вот этот код: public void draw(PaintEventArgs e) { ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru