如何在Winform上制作可拖动对象?

时间:2019-04-29 20:32:08

标签: c# winforms user-interface

enter image description here

我正在使用平面规划工具。或多或少提供了一个用于删除蓝图和自定义程序的程序。

说我知道如何将家具导入程序中。如何使对象在表单上可拖动?

1 个答案:

答案 0 :(得分:0)

一种实现方法是添加对象并在移动时根据鼠标的坐标更改其位置。进行更多调整并将位置移动居中将使位置更改更平滑。这是一个示例(在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等,则需要创建一个坐标/网格系统,这确实很容易。您只需要创建类并使用面向对象编程(OOP)的概念即可。