我只是准备好在这一点上挖出我自己的眼睛。我正在.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();
}
};
}
}
任何人都可以指向正确的方向或建议去哪里寻找。
非常感谢
这就是我正在努力,并即将建议。你做了我想说的话。 +1 – Maheep 2012-02-21 09:31:43
优秀的,毕竟我的眼睛可能会留在他们的口袋里!非常感谢! – 2012-02-21 09:35:01
那么'rect'是你的透明背景图片吗? – 2012-02-21 09:52:01