Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 10.10.2014
Сообщений: 121
1

Рисование квадратов в квадрате

19.11.2014, 21:24. Показов 2762. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
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 Lab2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Paint += Form1_Paint;
        }
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics gr = e.Graphics;
            Pen p = new Pen(Color.Black, 3);
            PointF p1, p2, p3, p4;
            float x0, y0;
            float x1, x2;
            float y1, y2;
            float x3, y3;
            float x4, y4;
            float x11, y11;
            float t;
            double P;
            int v;
            y0 = 50;
            x0 = 50;
            t = 100;
            P = 0.08;  //Коэфициент деления сторон
            v = 50;       //Вложенность квадратов
            gr.DrawRectangle(p, x0, y0, t, 100);
            //Инициализация рассчетных переменных
            x1 = x11 = x0;
            y1 = y11 = y0;
            x2 = x0 + t;
            y2 = y0;
            x3 = x0 + t;
            y3 = y0 + t;
            x4 = x0;
            y4 = y0 + t;
            for (int i = 1; i <= v; i++)
            {
                x1 = x1 + (x2 - x1) * (float)P;
                y1 = y1 + (y2 - y1) * (float)P;
 
                x2 = x2 + (x3 - x2) * (float)P;
                y2 = y2 + (y3 - y2) * (float)P;
 
                x3 = x3 + (x4 - x3) * (float)P;
                y3 = y3 + (y4 - y3) * (float)P;
 
                x4 = x4 + (x11 - x4) * (float)P;
                y4 = y4 + (y11 - y4) * (float)P;
 
                //Буферирование
                x11 = x1; y11 = y1;
 
                //Инициализация координат для метода DrawLine
                p1 = new PointF(x1, y1);
                p2 = new PointF(x2, y2);
                p3 = new PointF(x3, y3);
                p4 = new PointF(x4, y4);
                {
                    gr.DrawLine(p, p1, p2);
                    gr.DrawLine(p, p2, p3);
                    gr.DrawLine(p, p3, p4);
                    gr.DrawLine(p, p4, p1);
                }
            }
        }
    }
}
На первом фото, квадрат который рисует программа, а на втором какой надо сделать. Как его сделать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2014, 21:24
Ответы с готовыми решениями:

Объясните код, пожалуйста: рисование ряда квадратов на оси окружности
Было дано задание создать приложение, строящее ряд квадратов на оси окружности, код не мой,...

Приложение, которое строит ряд квадратов. Центр квадратов совпадает с центром экрана
Напишите приложение, которое строит ряд квадратов. Центр квадратов совпадает с центром экрана....

Рисование Рисование точек по координатам
Доброе время суток. Помогите мне наглядным примером. У меня есть массив координат a х у 1 2 3...

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

6
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
20.11.2014, 01:38 2
Дана18, ты забыла прикрепить фото
1
0 / 0 / 0
Регистрация: 10.10.2014
Сообщений: 121
22.11.2014, 19:21  [ТС] 3
Вот фотографии.
Миниатюры
Рисование квадратов в квадрате   Рисование квадратов в квадрате  
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
22.11.2014, 20:16 4
Тебе нужно при каждой итерации цикла менять цвет пера, скажем случайным образом. Примерно так:
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
private void Form1_Paint(object sender, PaintEventArgs e)
    {
        Graphics gr = e.Graphics;
        Pen p;
        Random rnd = new Random(DateTime.Now.Millisecond);
        PointF p1, p2, p3, p4;
        float x0, y0;
        float x1, x2;
        float y1, y2;
        float x3, y3;
        float x4, y4;
        float x11, y11;
        float t;
        double P;
        int v;
        y0 = 50;
        x0 = 50;
        t = 100;
        P = 0.08;  //Коэфициент деления сторон
        v = 50;       //Вложенность квадратов
        gr.DrawRectangle(p, x0, y0, t, 100);
        //Инициализация рассчетных переменных
        x1 = x11 = x0;
        y1 = y11 = y0;
        x2 = x0 + t;
        y2 = y0;
        x3 = x0 + t;
        y3 = y0 + t;
        x4 = x0;
        y4 = y0 + t;
        for (int i = 1; i <= v; i++)
        {
            x1 = x1 + (x2 - x1) * (float)P;
            y1 = y1 + (y2 - y1) * (float)P;
 
            x2 = x2 + (x3 - x2) * (float)P;
            y2 = y2 + (y3 - y2) * (float)P;
 
            x3 = x3 + (x4 - x3) * (float)P;
            y3 = y3 + (y4 - y3) * (float)P;
 
            x4 = x4 + (x11 - x4) * (float)P;
            y4 = y4 + (y11 - y4) * (float)P;
 
            //Буферирование
            x11 = x1; y11 = y1;
 
            //Инициализация координат для метода DrawLine
            p1 = new PointF(x1, y1);
            p2 = new PointF(x2, y2);
            p3 = new PointF(x3, y3);
            p4 = new PointF(x4, y4);
            //Случайный цвет пера
            p = new Pen(Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256)));
            {
                gr.DrawLine(p, p1, p2);
                gr.DrawLine(p, p2, p3);
                gr.DrawLine(p, p3, p4);
                gr.DrawLine(p, p4, p1);
            }
        }
    }
Я добавил строки 4, 5 и 54
0
0 / 0 / 0
Регистрация: 10.10.2014
Сообщений: 121
23.11.2014, 01:13  [ТС] 5
ViterAlex, а как сделать, что б был не один квадрат, а 4.
0
615 / 539 / 115
Регистрация: 24.03.2011
Сообщений: 576
23.11.2014, 10:09 6
Лучший ответ Сообщение было отмечено Дана18 как решение

Решение

Цитата Сообщение от Дана18 Посмотреть сообщение
а как сделать, что б был не один квадрат, а 4.
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
    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        DrawRectangles(e.Graphics, 0, 0);
        DrawRectangles(e.Graphics, 100, 0);
        DrawRectangles(e.Graphics, 0, 100);
        DrawRectangles(e.Graphics, 100, 100);
    }
 
    void DrawRectangles(Graphics gr, float dx, float dy)
    {
        gr.TranslateTransform(dx, dy);
            
        Random rnd = new Random(DateTime.Now.Millisecond);
        Pen p = new Pen(Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256)));
 
        PointF p1, p2, p3, p4;
        float x0, y0;
        float x1, x2;
        float y1, y2;
        float x3, y3;
        float x4, y4;
        float x11, y11;
        float t;
        double P;
        int v;
        y0 = 50;
        x0 = 50;
        t = 100;
        P = 0.08;  //Коэфициент деления сторон
        v = 50;       //Вложенность квадратов
        gr.DrawRectangle(p, x0, y0, t, 100);
        //Инициализация рассчетных переменных
        x1 = x11 = x0;
        y1 = y11 = y0;
        x2 = x0 + t;
        y2 = y0;
        x3 = x0 + t;
        y3 = y0 + t;
        x4 = x0;
        y4 = y0 + t;
        for (int i = 1; i <= v; i++)
        {
            x1 = x1 + (x2 - x1) * (float)P;
            y1 = y1 + (y2 - y1) * (float)P;
 
            x2 = x2 + (x3 - x2) * (float)P;
            y2 = y2 + (y3 - y2) * (float)P;
 
            x3 = x3 + (x4 - x3) * (float)P;
            y3 = y3 + (y4 - y3) * (float)P;
 
            x4 = x4 + (x11 - x4) * (float)P;
            y4 = y4 + (y11 - y4) * (float)P;
 
            //Буферирование
            x11 = x1; y11 = y1;
 
            //Инициализация координат для метода DrawLine
            p1 = new PointF(x1, y1);
            p2 = new PointF(x2, y2);
            p3 = new PointF(x3, y3);
            p4 = new PointF(x4, y4);
            //Случайный цвет пера
            p = new Pen(Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256)));
            {
                gr.DrawLine(p, p1, p2);
                gr.DrawLine(p, p2, p3);
                gr.DrawLine(p, p3, p4);
                gr.DrawLine(p, p4, p1);
            }
        }
 
        gr.ResetTransform();
    }
TranslateTransform изменяет начало координат координатной системы путем добавления заданного сдвига к матрице преобразования данного объекта Graphics.
Graphics.TranslateTransform - метод
Graphics.ResetTransform - метод
1
0 / 0 / 0
Регистрация: 10.10.2014
Сообщений: 121
23.11.2014, 22:01  [ТС] 7
Redfex,ViterAlex, огромное спасибо
0
23.11.2014, 22:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2014, 22:01
Помогаю со студенческими работами здесь

Найти формулу числа квадратов p-размера в квадрате n-размера
Здравствуйте! Допустим у нас есть квадрат 3 * 3, обозначим размер квадрата как n (внутри квадрат по...

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

Рисование квадратов символами
Где-то тут недавно видел задачу, которая из разных символов рисует квадраты с вписанными квадратами...

Нарисовать квадрат в квадрате, в квадрате и так далее
Прошу помощи, мне подкинули задачку. Необходимо вывести на экран вот это: * * * * * * * * * *...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru