1 Востаннє редагувалося Volodymyr Rizun (25.03.2016 01:30:27)

Тема: Малювання у C# (Windows Forms Application)

Доброго часу доби усім! Розробляючи програму для бакалаврської роботи зіткнувся з проблемою намалювати щось на формі. Як правильно оформити метод та які існують методи малювання у C#?

constant updating of personality..

2

Re: Малювання у C# (Windows Forms Application)

А ви хочете створити повноцінну прогу для малювання?

Говоріть українською! Живіть українською! Відчувайте українською!

3

Re: Малювання у C# (Windows Forms Application)

...канвас, як завжди https://msdn.microsoft.com/ru-ru/librar … 10%29.aspx

Доречi, правильніше говорити про технології. Э ще DirectX та OpenGL. На їх базi багато движкiв графiчних.

Білоруський журнал «Радиолюбитель»
Lead Radar systems engineer & Software developer of industrial automation
Мої розробки та відеоблог
Подякували: leofun01, Volodymyr Rizun2

4 Востаннє редагувалося leofun01 (25.03.2016 11:03:12)

Re: Малювання у C# (Windows Forms Application)

raxp написав:

...канвас, як завжди https://msdn.microsoft.com/ru-ru/librar … 10%29.aspx

Доречi, правильніше говорити про технології. Э ще DirectX та OpenGL. На їх базi багато движкiв графiчних.

Якщо людина питає як малювати в C# і не вказує технології, яку хоче використовувати, то скоріше за все вона не знає навіть про System.Drawing і відрисовку на контролах.

Volodymyr Rizun написав:

Як правильно оформити метод та які існують методи малювання у C#?

Перегляньте приклади:
techotopia.com Drawing_Graphics_in_C_Sharp
c-sharpcorner.com drawing graphics onto windows forms
codeproject.com Drawing Graphics
І створюйте окремі контроли, в яких Ви будете малювати. А потім додавайте ці контроли на форму.

Подякували: Volodymyr Rizun1

5 Востаннє редагувалося Volodymyr Rizun (25.03.2016 13:48:25)

Re: Малювання у C# (Windows Forms Application)

FakiNyan написав:

А ви хочете створити повноцінну прогу для малювання?

Ні. Моїм завданням не є  створити графічний редактор. Мені потрібно намалювати задану область маючи її математичну модель.

constant updating of personality..

6

Re: Малювання у C# (Windows Forms Application)

Volodymyr Rizun написав:
FakiNyan написав:

А ви хочете створити повноцінну прогу для малювання?

Ні. Моїм завданням не є  створити графічний редактор. Мені потрібно намалювати задану область маючи її математичну модель.

так це ж занадто просто для диплому, хіба ні?

Говоріть українською! Живіть українською! Відчувайте українською!

7

Re: Малювання у C# (Windows Forms Application)

FakiNyan написав:

так це ж занадто просто для диплому, хіба ні?

Намалювати область можливо і просто. Це стало для мене проблемою, оскільки в C# я новачок.
Але це не все завдання. Воно набагато ширше. Туди ще входить побудова гідродинамічної сітки за заданим алгоритмом, уточнення зовнішніх та внутрішніх вузлів тощо.

constant updating of personality..
Подякували: leofun01, 0xDADA11C72

8

Re: Малювання у C# (Windows Forms Application)

FakiNyan написав:
Volodymyr Rizun написав:
FakiNyan написав:

А ви хочете створити повноцінну прогу для малювання?

Ні. Моїм завданням не є  створити графічний редактор. Мені потрібно намалювати задану область маючи її математичну модель.

так це ж занадто просто для диплому, хіба ні?

Зробити математичну модель - це просто? Ню-ню.

МАКЕ ЦКЯАІИЕ БЯЕАТ АБАІИ
Подякували: leofun011

9

Re: Малювання у C# (Windows Forms Application)

quez написав:
FakiNyan написав:
Volodymyr Rizun написав:

Ні. Моїм завданням не є  створити графічний редактор. Мені потрібно намалювати задану область маючи її математичну модель.

так це ж занадто просто для диплому, хіба ні?

Зробити математичну модель - це просто? Ню-ню.

ну я думав, що вона вже зроблена, а пану тільки формулки тре вписати

Говоріть українською! Живіть українською! Відчувайте українською!

10

Re: Малювання у C# (Windows Forms Application)

Як було сказано вище, користуйся методами класу System.Drawing.

Подякували: Volodymyr Rizun, leofun012

11 Востаннє редагувалося raxp (25.03.2016 20:05:47)

Re: Малювання у C# (Windows Forms Application)

Якщо серйозно підходити до справи, забудьте про WPF та контроли, навіть про GDI. Вивчайте кросплатформовий OpenGL, OpenGL ES.

класу System.Drawing

оберточнік )

Білоруський журнал «Радиолюбитель»
Lead Radar systems engineer & Software developer of industrial automation
Мої розробки та відеоблог
Подякували: leofun011

12

Re: Малювання у C# (Windows Forms Application)

Якщо серйозно підходити до справи, забудьте про WPF та контроли, навіть про GDI. Вивчайте кросплатформовий OpenGL, OpenGL ES.

А якщо дуже серйозно підходити, то робіть чип на VHDL  :P

оберточнік )

Що саме воно обертає? ;)

Говорила баба діду: «Я поїду к Білодіду, Ізучу двомовну мову І вернусь обратно знову». А дід бабі: «Не *изди, К Білодіду нєт їзди, — Туди не ходять поїзди»
Подякували: leofun011

13

Re: Малювання у C# (Windows Forms Application)

GDI+ is a class-based API.
Та не треба доходити до маразму )

Білоруський журнал «Радиолюбитель»
Lead Radar systems engineer & Software developer of industrial automation
Мої розробки та відеоблог

14

Re: Малювання у C# (Windows Forms Application)

raxp написав:

Якщо серйозно підходити до справи, забудьте про WPF та контроли, навіть про GDI. Вивчайте кросплатформовий OpenGL, OpenGL ES.

Думаю на вивчення System.Drawing доведеться потратити менше часу, ніж на OpenGL.

15

Re: Малювання у C# (Windows Forms Application)

Це не лабораторна робота або курсова, це бакалавр. Потiм в країнi такi спецiалiсти формошльопи )

Білоруський журнал «Радиолюбитель»
Lead Radar systems engineer & Software developer of industrial automation
Мої розробки та відеоблог

16

Re: Малювання у C# (Windows Forms Application)

в оупен дже елі нема нічо складного, і то навіть цікаво

Говоріть українською! Живіть українською! Відчувайте українською!
Подякували: leofun011

17 Востаннє редагувалося raxp (26.03.2016 14:23:08)

Re: Малювання у C# (Windows Forms Application)

http://programming.in.ua/programming/c- … pengl.html (цикл з вiдео на рiднiй мовi)
http://opengl-tutorial.blogspot.com/p/blog-page.html

Білоруський журнал «Радиолюбитель»
Lead Radar systems engineer & Software developer of industrial automation
Мої розробки та відеоблог
Подякували: leofun011

18 Востаннє редагувалося Volodymyr Rizun (04.04.2016 22:34:05)

Re: Малювання у C# (Windows Forms Application)

І знову доброго часу доби усім! Скориставшись вашими порадами я, здебільшого, розібрався з System.Drawing. Ще раз дякую всім, хто відгукнувся.
На даному етапі в мене виникло інше питання. Додавши на форму кнопку та PictureBox на якому я власне зібрався малювати, написав обробник кнопки. Виглядає він наступним чином:

 private void btn1_Click(object sender, EventArgs e)
        {
            Bitmap bmp = new Bitmap(picture.Width, picture.Height);
            Graphics g = Graphics.FromImage(bmp);
            Pen pen = new Pen(Color.Blue, 2);
            for (int j = 0; j < m; j++)
                for (int i = 0; i < n - 1; i++)
                {
                    g.DrawLine(pen,
                        x0 + (int)Math.Round(k * x[i, j]),
                        y0 - (int)Math.Round(k * y[i, j]),
                        x0 + (int)Math.Round(k * x[i + 1, j]),
                        y0 - (int)Math.Round(k * y[i + 1, j]));
                }
            for (int i = 0; i < n; i++)
                for (int j = 0; j < m - 1; j++)
                {
                    g.DrawLine(pen,
                        x0 + (int)Math.Round(k * x[i, j]),
                        y0 - (int)Math.Round(k * y[i, j]),
                        x0 + (int)Math.Round(k * x[i, j + 1]),
                        y0 - (int)Math.Round(k * y[i, j + 1]));
                }
            picture.Image = bmp;
        }

Форма запускається, при натисканні на кнопку нічого не відбувається. Підкажіть, будь ласка, що я роблю не так?

constant updating of personality..
Подякували: FakiNyan1

19

Re: Малювання у C# (Windows Forms Application)

Що таке m, n, k, x0, y0, x[,], y[,] ?
Поставте breakpoint на перший for і покроково перегляньте значення змінних.
А краще покажіть весь проект, тоді я розберусь.

20 Востаннє редагувалося Volodymyr Rizun (05.04.2016 00:20:20)

Re: Малювання у C# (Windows Forms Application)

leofun01 написав:

Що таке m, n, k, x0, y0, x[,], y[,] ?

m та n, - це розбиття сітки.
k -  коефіцієнт масштабу.
x0 та y0 - це початок координат.
x[,] та y[,] - масиви координат сітки на попередньому кроці.

Додаю код проекту:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BachelorWork
{
    public partial class Form1 : Form
    {
        public const int m = 50;
        public const int n = 50;
        public double[,] x = new double[n, m];
        public double[,] y = new double[n, m];
        public int k = 14; 
        public int x0 = 10;
        public int y0 = 100;
        public Form1()
        {
            InitializeComponent();
        }
        private void btn1_Click(object sender, EventArgs e)
        {
            Bitmap bmp = new Bitmap(picture.Width, picture.Height);
            Graphics g = Graphics.FromImage(bmp);
            Pen pen = new Pen(Color.Blue, 2);
            for (int j = 0; j < m; j++)
                for (int i = 0; i < n - 1; i++)
                {
                    g.DrawLine(pen, 
                           x0 + (int)Math.Round(k * x[i, j]),
                           y0 - (int)Math.Round(k * y[i, j]),
                           x0 + (int)Math.Round(k * x[i + 1, j]), 
                           y0 - (int)Math.Round(k * y[i + 1, j]));
                }
            for (int i = 0; i < n; i++)
                for (int j = 0; j < m - 1; j++)
                {
                    g.DrawLine(pen, 
                           x0 + (int)Math.Round(k * x[i, j]),
                           y0 - (int)Math.Round(k * y[i, j]), 
                           x0 + (int)Math.Round(k * x[i, j + 1]), 
                           y0 - (int)Math.Round(k * y[i, j + 1]));
                }
            picture.Image = bmp;
        }
    }
}
constant updating of personality..
Подякували: leofun01, FakiNyan2