5Sazi Ответов: 3

Приложение C# Drawing rectangle window form


Всем Привет,

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

lukeer

В чем именно заключается ваша проблема?
Это из-за рисунка?
Это сортировка?
Это как вообще начать?

5Sazi

Привет Лукер,

Пожалуйста, не могли бы вы помочь мне, как начать, вот где я запутался!!!пожалуйста

5Sazi

Большое вам спасибо, мой прямоугольник отображается на панели. Мне нужно отсортировать их и отобразить пять прямоугольников на панели. Не могли бы вы также написать шаги для достижения этой цели.

lukeer

Будьте осторожны, что ответить. Ваш последний вопрос был ответом на ваш собственный комментарий. Следовательно, вам сообщили об этом, а не мне.

Тем не менее вам повезло, и я проверил. Я обновил свой ответ.

5Sazi

Большое спасибо за вашу доброту. Я попробую это решение сегодня вечером

Member 11540368

8

3 Ответов

Рейтинг:
19

lukeer

Запуск проекта предполагает следующее:

1) Запустите Visual Studio.
2) Создайте новый проект.
My VS показывает начальную страницу, которая предлагает ярлык для создания проекта.
Или посмотрите в меню, где вы, скорее всего, ожидаете эту функциональность.
3) появляется диалог. В этом случае выберите создание приложения Windows Forms.
4) VS создает для вас несколько файлов и открывает представление конструктора для "Form1".
5) перетащите панель из панели инструментов в форму Form1. Он становится "Panel1".
6) отредактируйте свойства Panel1:
Перейдите с вкладки свойства на вкладку события.
Дважды щелкните на событии Panel1 "Paint".
7) VS создает для вас обработчик событий и переключается на его представление кода.
8) применить Originalgriff's решение.

[Редактировать]
Изменение расположения прямоугольников в результате сортировки возможно, но требует еще одного уровня косвенности: вы должны изменить данные прямоугольника из жестко закодированных в Paint() в структуру данных, которую вы можете изменить в зависимости от обстоятельств, и изменить саму Paint (), чтобы она могла работать с этой структурой данных.

Создать Список&низкотемпературный;Размер> на уровне класса, который содержит ваши данные.
Измените Paint (), чтобы использовать список.

List<System.Drawing.Size> _rectangleData = new List<System.Drawing.Size>;

private void Panel1_Paint(object sender, PaintEventArgs e)
{
    for(int i = 0; i < _rectangleData.Count; i++)
    {
        System.Drawing.Point location = new System.Drawing.Point(10, 20 + 50 * i);
        System.Drwaing.Size size = _rectangleData[i];
        e.Graphics.DrawRectangle(Pens.Red, new System.Drawing.Rectangle(location, size));
    }
}


На данный момент это ничего не нарисует, потому что в нем нет данных. _rectangleData Поскольку я понятия не имею, откуда вы его возьмете, вот пример заполнения списка прямо при создании:
List<System.Drawing.Size> _rectangleData = new List<System.Drawing.Size>
{
    new System.Drawing.Size(10, 20),
    new System.Drawing.Size(30, 40)
}


Теперь поиграйте с алгоритмом определения местоположения, пока он не будет соответствовать вашим потребностям.

Сортировка списка может быть выполнена с помощью List.Sort(сравнение<T>)[^] метод. Для этого вам нужно реализовать свое собственное сравнение. Пример приведен на странице MSDN в разделе Сравнение<T>[^]. Имейте в виду, что Т означает Размер на сегодня.
[/Редактировать]


Рейтинг:
0

OriginalGriff

Нарисовать прямоугольник очень просто.
Обработайте событие Paint (вероятно, неплохо поместить панель на форму, а затем обработать событие Paint для этого - таким образом вы будете рисовать прямоугольники внутри панели, а не пытаться рисовать поверх любых других элементов управления, которые у вас могут быть, что гораздо сложнее сделать).
Затем в обработчике:

private void myDrawingPanel_Paint(object sender, PaintEventArgs e)
    {
    Graphics g = e.Graphics;
    g.DrawRectangle(Pens.Red, new Rectangle(10, 10, 100, 75));
    }
Где (10, 10) - расположение верхнего левого угла прямоугольника, а с-100, высота 75.

Если вам нужно 5 прямоугольников, то вызовите DrawRectangle 5 раз, с разными местоположениями и размерами.


Рейтинг:
0

Member 13805445

using System;
using System.Drawing;
using System.Windows.Forms;

namespace testkhat
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
      
        private void button1_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        public void Gosheha()
        {
            int a1 = 0;
            int b1 = 0;
            Graphics G4g = this.CreateGraphics();

            Color myRgbColor70 = new Color();
            Color myRgbColor80 = new Color();
            Color myRgbColor90 = new Color();

            myRgbColor70 = Color.FromArgb(63, 72, 204);
            myRgbColor80 = Color.FromArgb(0, 162, 232);
            myRgbColor90 = Color.FromArgb(153, 217, 234);

            SolidBrush Brosh70 = new SolidBrush(myRgbColor70);
            SolidBrush Brosh80 = new SolidBrush(myRgbColor80);
            SolidBrush Brosh90 = new SolidBrush(myRgbColor90);
            /////////////////////////////////////////////////////
            G4g.FillRectangle(Brosh70, (a1 + 0), (b1 + 0), 1, 1);
            G4g.FillRectangle(Brosh70, (a1 + 1), (b1 + 0), 1, 1);
            G4g.FillRectangle(Brosh70, (a1 + 2), (b1 + 0), 1, 1);
            G4g.FillRectangle(Brosh70, (a1 + 3), (b1 + 0), 1, 1);
            G4g.FillRectangle(Brosh70, (a1 + 4), (b1 + 0), 1, 1);
            G4g.FillRectangle(Brosh70, (a1 + 5), (b1 + 0), 1, 1);
            G4g.FillRectangle(Brosh70, (a1 + 0), (b1 + 1), 1, 1);
            G4g.FillRectangle(Brosh80, (a1 + 1), (b1 + 1), 1, 1);
            G4g.FillRectangle(Brosh80, (a1 + 2), (b1 + 1), 1, 1);
            G4g.FillRectangle(Brosh80, (a1 + 3), (b1 + 1), 1, 1);
            G4g.FillRectangle(Brosh80, (a1 + 4), (b1 + 1), 1, 1);
            G4g.FillRectangle(Brosh80, (a1 + 5), (b1 + 1), 1, 1);
            G4g.FillRectangle(Brosh70, (a1 + 0), (b1 + 2), 1, 1);
            G4g.FillRectangle(Brosh80, (a1 + 1), (b1 + 2), 1, 1);
            G4g.FillRectangle(Brosh90, (a1 + 2), (b1 + 2), 1, 1);
            G4g.FillRectangle(Brosh90, (a1 + 3), (b1 + 2), 1, 1);
            G4g.FillRectangle(Brosh90, (a1 + 4), (b1 + 2), 1, 1);
            G4g.FillRectangle(Brosh90, (a1 + 5), (b1 + 2), 1, 1);
            G4g.FillRectangle(Brosh70, (a1 + 0), (b1 + 3), 1, 1);
            G4g.FillRectangle(Brosh80, (a1 + 1), (b1 + 3), 1, 1);
            G4g.FillRectangle(Brosh90, (a1 + 2), (b1 + 3), 1, 1);
            G4g.FillRectangle(Brosh90, (a1 + 3), (b1 + 3), 1, 1);
            G4g.FillRectangle(Brosh90, (a1 + 4), (b1 + 3), 1, 1);
            G4g.FillRectangle(Brosh90, (a1 + 5), (b1 + 3), 1, 1);
            G4g.FillRectangle(Brosh70, (a1 + 0), (b1 + 4), 1, 1);
            G4g.FillRectangle(Brosh80, (a1 + 1), (b1 + 4), 1, 1);
            G4g.FillRectangle(Brosh90, (a1 + 2), (b1 + 4), 1, 1);
            G4g.FillRectangle(Brosh90, (a1 + 3), (b1 + 4), 1, 1);
            G4g.FillRectangle(Brosh80, (a1 + 4), (b1 + 4), 1, 1);
            G4g.FillRectangle(Brosh80, (a1 + 5), (b1 + 4), 1, 1);
            G4g.FillRectangle(Brosh70, (a1 + 0), (b1 + 5), 1, 1);
            G4g.FillRectangle(Brosh80, (a1 + 1), (b1 + 5), 1, 1);
            G4g.FillRectangle(Brosh90, (a1 + 2), (b1 + 5), 1, 1);
            G4g.FillRectangle(Brosh90, (a1 + 3), (b1 + 5), 1, 1);
            G4g.FillRectangle(Brosh80, (a1 + 4), (b1 + 5), 1, 1);
            G4g.FillRectangle(Brosh70, (a1 + 5), (b1 + 5), 1, 1);
            /////////////////////////////////////////////////////////
            int a2 = this.Width - 6;
            int b2 = 0;

            G4g.FillRectangle(Brosh70, (a2 + 0), (b2 + 0), 1, 1);
            G4g.FillRectangle(Brosh70, (a2 + 1), (b2 + 0), 1, 1);
            G4g.FillRectangle(Brosh70, (a2 + 2), (b2 + 0), 1, 1);
            G4g.FillRectangle(Brosh70, (a2 + 3), (b2 + 0), 1, 1);
            G4g.FillRectangle(Brosh70, (a2 + 4), (b2 + 0), 1, 1);
            G4g.FillRectangle(Brosh70, (a2 + 5), (b2 + 0), 1, 1);
            G4g.FillRectangle(Brosh80, (a2 + 0), (b2 + 1), 1, 1);
            G4g.FillRectangle(Brosh80, (a2 + 1), (b2 + 1), 1, 1);
            G4g.FillRectangle(Brosh80, (a2 + 2), (b2 + 1), 1, 1);
            G4g.FillRectangle(Brosh80, (a2 + 3), (b2 + 1), 1, 1);
            G4g.FillRectangle(Brosh80, (a2 + 4), (b2 + 1), 1, 1);
            G4g.FillRectangle(Brosh70, (a2 + 5), (b2 + 1), 1, 1);
            G4g.FillRectangle(Brosh90, (a2 + 0), (b2 + 2), 1, 1);
            G4g.FillRectangle(Brosh90, (a2 + 1), (b2 + 2), 1, 1);
            G4g.FillRectangle(Brosh90, (a2 + 2), (b2 + 2), 1, 1);
            G4g.FillRectangle(Brosh90, (a2 + 3), (b2 + 2), 1, 1);
            G4g.FillRectangle(Brosh80, (a2 + 4), (b2 + 2), 1, 1);
            G4g.FillRectangle(Brosh70, (a2 + 5), (b2 + 2), 1, 1);
            G4g.FillRectangle(Brosh90, (a2 + 0), (b2 + 3), 1, 1);
            G4g.FillRectangle(Brosh90, (a2 + 1), (b2 + 3), 1, 1);
            G4g.FillRectangle(Brosh90, (a2 + 2), (b2 + 3), 1, 1);
            G4g.FillRectangle(Brosh90, (a2 + 3), (b2 + 3), 1, 1);
            G4g.FillRectangle(Brosh80, (a2 + 4), (b2 + 3), 1, 1);
            G4g.FillRectangle(Brosh70, (a2 + 5), (b2 + 3), 1, 1);
            G4g.FillRectangle(Brosh80, (a2 + 0), (b2 + 4), 1, 1);
            G4g.FillRectangle(Brosh80, (a2 + 1), (b2 + 4), 1, 1);
            G4g.FillRectangle(Brosh90, (a2 + 2), (b2 + 4), 1, 1);
            G4g.FillRectangle(Brosh90, (a2 + 3), (b2 + 4), 1, 1);
            G4g.FillRectangle(Brosh80, (a2 + 4), (b2 + 4), 1, 1);
            G4g.FillRectangle(Brosh70, (a2 + 5), (b2 + 4), 1, 1);
            G4g.FillRectangle(Brosh70, (a2 + 0), (b2 + 5), 1, 1);
            G4g.FillRectangle(Brosh80, (a2 + 1), (b2 + 5), 1, 1);
            G4g.FillRectangle(Brosh90, (a2 + 2), (b2 + 5), 1, 1);
            G4g.FillRectangle(Brosh90, (a2 + 3), (b2 + 5), 1, 1);
            G4g.FillRectangle(Brosh80, (a2 + 4), (b2 + 5), 1, 1);
            G4g.FillRectangle(Brosh70, (a2 + 5), (b2 + 5), 1, 1);
            /////////////////////////////////////////////////////////
            int a3 = 0;
            int b3 = this.Height - 6;

            G4g.FillRectangle(Brosh70, (a3 + 0), (b3 + 0), 1, 1);
            G4g.FillRectangle(Brosh70, (a3 + 5), (b3 + 0), 1, 1);
            G4g.FillRectangle(Brosh70, (a3 + 0), (b3 + 1), 1, 1);
            G4g.FillRectangle(Brosh70, (a3 + 0), (b3 + 2), 1, 1);
            G4g.FillRectangle(Brosh70, (a3 + 0), (b3 + 3), 1, 1);
            G4g.FillRectangle(Brosh70, (a3 + 0), (b3 + 4), 1, 1);
            G4g.FillRectangle(Brosh70, (a3 + 0), (b3 + 5), 1, 1);
            G4g.FillRectangle(Brosh70, (a3 + 1), (b3 + 5), 1, 1);
            G4g.FillRectangle(Brosh70, (a3 + 2), (b3 + 5), 1, 1);
            G4g.FillRectangle(Brosh70, (a3 + 3), (b3 + 5), 1, 1);
            G4g.FillRectangle(Brosh70, (a3 + 4), (b3 + 5), 1, 1);
            G4g.FillRectangle(Brosh70, (a3 + 5), (b3 + 5), 1, 1);

            G4g.FillRectangle(Brosh80, (a3 + 1), (b3 + 4), 1, 1);
            G4g.FillRectangle(Brosh80, (a3 + 2), (b3 + 4), 1, 1);
            G4g.FillRectangle(Brosh80, (a3 + 3), (b3 + 4), 1, 1);
            G4g.FillRectangle(Brosh80, (a3 + 4), (b3 + 4), 1, 1);
            G4g.FillRectangle(Brosh80, (a3 + 5), (b3 + 4), 1, 1);
            G4g.FillRectangle(Brosh80, (a3 + 1), (b3 + 3), 1, 1);
            G4g.FillRectangle(Brosh80, (a3 + 1), (b3 + 2), 1, 1);
            G4g.FillRectangle(Brosh80, (a3 + 1), (b3 + 1), 1, 1);
            G4g.FillRectangle(Brosh80, (a3 + 1), (b3 + 0), 1, 1);
            G4g.FillRectangle(Brosh80, (a3 + 4), (b3 + 0), 1, 1);
            G4g.FillRectangle(Brosh80, (a3 + 4), (b3 + 1), 1, 1);
            G4g.FillRectangle(Brosh80, (a3 + 5), (b3 + 1), 1, 1);

            G4g.FillRectangle(Brosh90, (a3 + 2), (b3 + 0), 1, 1);
            G4g.FillRectangle(Brosh90, (a3 + 3), (b3 + 0), 1, 1);
            G4g.FillRectangle(Brosh90, (a3 + 2), (b3 + 1), 1, 1);
            G4g.FillRectangle(Brosh90, (a3 + 3), (b3 + 1), 1, 1);
            G4g.FillRectangle(Brosh90, (a3 + 2), (b3 + 2), 1, 1);
            G4g.FillRectangle(Brosh90, (a3 + 3), (b3 + 2), 1, 1);
            G4g.FillRectangle(Brosh90, (a3 + 4), (b3 + 2), 1, 1);
            G4g.FillRectangle(Brosh90, (a3 + 5), (b3 + 2), 1, 1);
            G4g.FillRectangle(Brosh90, (a3 + 2), (b3 + 3), 1, 1);
            G4g.FillRectangle(Brosh90, (a3 + 3), (b3 + 3), 1, 1);
            G4g.FillRectangle(Brosh90, (a3 + 4), (b3 + 3), 1, 1);
            G4g.FillRectangle(Brosh90, (a3 + 5), (b3 + 3), 1, 1);
            //////////////////////////////////////////////////////
            int a4 = this.Width - 6;
            int b4 = this.Height - 6;

            G4g.FillRectangle(Brosh70, (a4 + 0), (b4 + 0), 1, 1);
            G4g.FillRectangle(Brosh70, (a4 + 5), (b4 + 4), 1, 1);
            G4g.FillRectangle(Brosh70, (a4 + 0), (b4 + 5), 1, 1);
            G4g.FillRectangle(Brosh70, (a4 + 1), (b4 + 5), 1, 1);
            G4g.FillRectangle(Brosh70, (a4 + 2), (b4 + 5), 1, 1);
            G4g.FillRectangle(Brosh70, (a4 + 3), (b4 + 5), 1, 1);
            G4g.FillRectangle(Brosh70, (a4 + 4), (b4 + 5), 1, 1);
            G4g.FillRectangle(Brosh70, (a4 + 5), (b4 + 5), 1, 1);
            G4g.FillRectangle(Brosh70, (a4 + 5), (b4 + 0), 1, 1);
            G4g.FillRectangle(Brosh70, (a4 + 5), (b4 + 1), 1, 1);
            G4g.FillRectangle(Brosh70, (a4 + 5), (b4 + 2), 1, 1);
            G4g.FillRectangle(Brosh70, (a4 + 5), (b4 + 3), 1, 1);

            G4g.FillRectangle(Brosh80, (a4 + 1), (b4 + 0), 1, 1);
            G4g.FillRectangle(Brosh80, (a4 + 4), (b4 + 0), 1, 1);
            G4g.FillRectangle(Brosh80, (a4 + 0), (b4 + 1), 1, 1);
            G4g.FillRectangle(Brosh80, (a4 + 1), (b4 + 1), 1, 1);
            G4g.FillRectangle(Brosh80, (a4 + 4), (b4 + 1), 1, 1);
            G4g.FillRectangle(Brosh80, (a4 + 4), (b4 + 2), 1, 1);
            G4g.FillRectangle(Brosh80, (a4 + 4), (b4 + 3), 1, 1);
            G4g.FillRectangle(Brosh80, (a4 + 0), (b4 + 4), 1, 1);
            G4g.FillRectangle(Brosh80, (a4 + 1), (b4 + 4), 1, 1);
            G4g.FillRectangle


Dave Kreskowiak

Необъяснимый дамп кода - это не ответ ни на что.