Рисование линий / квадратов с помощью c # - PullRequest
1 голос
/ 03 марта 2011

Я работаю над приложением Windows для одного клиента.Он хочет, чтобы можно было ввести высоту, ширину и длину картонной коробки, а затем приложение автоматически нарисовало картонную коробку на экране.Я хочу знать, возможно ли это сделать с помощью C #.Вот пример того, как картонная коробка должна выглядеть одинаково:

enter image description here

Пожалуйста, дайте мне знать ваше мнение, и если кто-то еще делал что-то подобное в прошлом.Заранее спасибо за любую помощь.

Ответы [ 3 ]

0 голосов
/ 03 марта 2011

Конечно. Вам нужны методы в пространстве имен System.Drawing в сочетании с методом CreateGraphics () большинства элементов управления Winform.

Основная настройка заключается в том, чтобы поместить в форму какой-либо элемент управления, например Panel или PictureBox. Когда придет время нарисовать прямоугольник, вы будете использовать метод CreateGraphics () этого элемента управления, чтобы получить объект, представляющий пространство, того же размера на экране, что и элемент управления, в котором вы можете рисовать. Затем вы нарисуете линии и / или прямоугольники в правильных формах на экране (я оставлю вам математику выяснения того, как коробка разобьется на связанные картонные панели). Просмотрите документы MSDN для DrawRect, а также для Brush (который вы будете использовать для определения внешнего вида линий).

РЕДАКТИРОВАТЬ: ОК, я дам вам математику. Для коробки длиной X, высотой Y, глубиной Z панели разбиваются следующим образом:

 --------- ------------- --------- ------------- 
|  Zx.5Z  |    Xx.5Z    |  Zx.5Z  |    Xx.5Z    |
|---------+-------------+---------+-------------+
|         |             |         |             |
|   ZxY   |     XxY     |   ZxY   |     XxY     |
|         |             |         |             |
|---------+-------------+---------+-------------+
|  Zx.5Z  |    Xx.5Z    |  Zx.5Z  |    Xx.5Z    |
 --------- ------------- --------- -------------
0 голосов
/ 04 марта 2011

Некоторый код для рисования прямоугольника на форме (то же самое работает для UserControl):

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        SetStyle(ControlStyles.UserPaint, true);
        SetStyle(ControlStyles.AllPaintingInWmPaint, true);       
    }

    private void Form1_Paint(object sender, PaintEventArgs e)   
    {
        e.Graphics.DrawRectangle(Pens.Black, 10, 10, 100, 100);
    }
}

Посмотрите на другие методы e.Graphs.Draw *. Объедините их, чтобы сделать свое произведение искусства!

0 голосов
/ 03 марта 2011

Я не делал ничего подобного, но это определенно возможно в C #. Похоже, что вашей коробке нужны две стороны: ширина * высота и две стороны - длина * высота, а все клапаны должны быть шириной / 2 или длиной / 2 (длинной / высокой), в зависимости от того, что короче. Все, что вам нужно для рисования, должно находиться в пространстве имен System.Drawing, включая Rectangle и Brush.

...