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 算力,解读结果公开显示在下面。

还没有人解读过这个文件。