【发布时间】:2012-02-21 17:45:17
【问题描述】:
早上,
此时我正准备睁大眼睛。我正在.NET 3.5 上使用 Windows 窗体构建一个基本的图像编辑器,我需要的是一个“选择工具”。此工具需要在单击按钮时出现,并且是固定大小的,它需要是具有透明中心的可拖放矩形。
这样做的目的几乎就像一个“相框”,因为用户可以将矩形拖放到图像的一部分上,然后点击另一个按钮来截取该点矩形内的任何内容。 (请注意:我不想要一个橡皮筋矩形,它必须是固定大小、可在表单中拖动且透明的)。
我花了几天时间在互联网和这个网站上搜索可能的解决方案,但都没有任何用处。我设法使控件可拖动-但这会带来透明度问题。下面是使控件可拖动的代码,但我不确定这是正确的路径。
class ControlMover
{
public enum Direction
{
Any,
Horizontal,
Vertical
}
public static void Init(Control control)
{
Init(control, Direction.Any);
}
public static void Init(Control control, Direction direction)
{
Init(control, control, direction);
}
public static void Init(Control control, Control container, Direction direction)
{
EditorForm.blnSelectArea = true;
bool Dragging = false;
Point DragStart = Point.Empty;
control.MouseDown += delegate(object sender, MouseEventArgs e)
{
Dragging = true;
DragStart = new Point(e.X, e.Y);
control.Capture = true;
};
control.MouseUp += delegate(object sender, MouseEventArgs e)
{
Dragging = false;
control.Capture = false;
};
control.MouseMove += delegate(object sender, MouseEventArgs e)
{
if (Dragging)
{
if (direction != Direction.Vertical)
container.Left = Math.Max(0, e.X + container.Left - DragStart.X);
if (direction != Direction.Horizontal)
container.Top = Math.Max(0, e.Y + container.Top - DragStart.Y);
control.Invalidate();
}
};
}
}
谁能给我指出正确的方向或建议去哪里看。
非常感谢
【问题讨论】: