DrawToolsRedux/ToolPointer.cs
(开头部分) 6KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System.Drawing;
using System.Windows.Forms;
namespace DrawTools
{
/// <summary>
/// Pointer tool
/// </summary>
internal class ToolPointer : Tool
{
private enum SelectionMode
{
None,
NetSelection, // group selection is active
Move, // object(s) are moves
Size // object is resized
}
private SelectionMode selectMode = SelectionMode.None;
// Object which is currently resized:
private DrawObject resizedObject;
private int resizedObjectHandle;
// Keep state about last and current point (used to move and resize objects)
private Point lastPoint = new Point(0, 0);
private Point startPoint = new Point(0, 0);
private CommandChangeState commandChangeState;
private bool wasMove;
private ToolTip toolTip = new ToolTip();
/// <summary>
/// Left mouse button is pressed
/// </summary>
/// <param name="drawArea"></param>
/// <param name="e"></param>
public override void OnMouseDown(DrawArea drawArea, MouseEventArgs e)
{
commandChangeState = null;
wasMove = false;
selectMode = SelectionMode.None;
Point point = drawArea.BackTrackMouse(new Point(e.X, e.Y));
// Test for resizing (only if control is selected, cursor is on the handle)
int al = drawArea.TheLayers.ActiveLayerIndex;
int n = drawArea.TheLayers[al].Graphics.SelectionCount;
for (int i = 0; i < n; i++)
{
DrawObject o = drawArea.TheLayers[al].Graphics.GetSelectedObject(i);
int handleNumber = o.HitTest(point);
if (handleNumber > 0)
{
selectMode = SelectionMode.Size;
// keep resized object in class members
resizedObject = o;
resizedObjectHandle = handleNumber;
// Since we want to resize only one object, unselect all other objects
后面还有 187 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。