Как я могу сделать перетаскиваемые объекты на winform? - PullRequest
0 голосов
/ 29 апреля 2019

enter image description here

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

Скажите, я выясняю, как импортировать мебель в программу. Как мне сделать объекты перетаскиваемыми в форме?

1 Ответ

0 голосов
/ 30 апреля 2019

Один из способов сделать это - добавить ваши объекты и изменить их местоположение на основе координат мыши во время движения. Выполнение некоторых дополнительных настроек и центрирование движения местоположения сделает изменение местоположения более плавным. Вот пример (в C #):

Например, у вас есть класс для объекта.

public class Object {
    string _name;
    int sizeX;
    int sizeY;

    int locationX;
    int locationY;

    public Object(string name) {
         locationX = 0;
         locationY = 0;

         switch(name) {
            case "chair":
                _name = name;
                sizeX = 50; //Predifined width of the chair object
                sizeY = 70; //Predifined height of the chair object
            case ... //Continue with the process
         }
    }

    public void setLocation(int x, int y) {
        locationX = x;
        locationY = y;
    }
}

Итак, теперь вы можете перейти в основную форму.

public void moveObject() {
   Point coordinates = GetMouseCoordinates(); //There are a lot of ways.
   chair.setLocation(coordinates.X, coordinates.Y);
}

Для более плавного движения сделайте это:

public void moveObject() {
   MouseCoordinates coordinates = GetMouseCoordinates(); //There are a lot of ways.
   chair.locationY = coordinates.Y + chair.sizeY / 2;
   chair.locationX = coordinates.X + chair.sizeX / 2;
}

Это буквально самый простой способ. Существует множество способов создания перетаскиваемых объектов на WinForm . Однако, если вы хотите создать что-то вроде AutoCAD, 2D Animators и т. Д., Вам нужно создать систему координат / сетки, что действительно легко. Вам просто нужно создать классы и использовать концепцию объектно-ориентированного программирования (ООП) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...