主要思想是我想使用鼠标事件(鼠标按下/移动/向上)在画布上绘制一些矩形并将它们放入集合中。选中一个复选框后,矩形模板将被更改,并且可以移动或调整它们的大小。
我查看了在codeProject Code Project上发布的上一个项目。如果我从XAML创建对象而不是代码,那么代码对我有用。
这就是XAML到目前为止的表现:
public class Move : Thumb
{
public Move()
{
DragDelta += new DragDeltaEventHandler(Move_DragDelta);
}
MainWindow mw = new MainWindow();
private void Move_DragDelta(object sender, DragDeltaEventArgs e)
{
Control designerItem = DataContext as Control;
var xx = designerItem;
if (designerItem != null)
{
double left = Canvas.GetLeft(designerItem);
double top = Canvas.GetTop(designerItem);
Point rectPos = designerItem.TransformToAncestor(Application.Current.MainWindow).Transform(new Point(0, 0));
Canvas.SetLeft(designerItem, rectPos.X + e.HorizontalChange);
Canvas.SetTop(designerItem, rectPos.Y + e.VerticalChange);
}
}
}
移动课程:
class Resize : Thumb
{
public Resize()
{
DragDelta += new DragDeltaEventHandler(Resize_DragDelta);
}
private void Resize_DragDelta(object sender, DragDeltaEventArgs e)
{
Control designerItem = DataContext as Control;
if (designerItem != null)
{
double deltaVertical, deltaHorizontal;
switch (VerticalAlignment)
{
case VerticalAlignment.Bottom:
deltaVertical = Math.Min(-e.VerticalChange, designerItem.ActualHeight - designerItem.MinHeight);
designerItem.Height -= deltaVertical;
break;
case VerticalAlignment.Top:
deltaVertical = Math.Min(e.VerticalChange, designerItem.ActualHeight - designerItem.MinHeight);
Canvas.SetTop(designerItem, Canvas.GetTop(designerItem) + deltaVertical);
designerItem.Height -= deltaVertical;
break;
default:
break;
}
switch (HorizontalAlignment)
{
case HorizontalAlignment.Left:
deltaHorizontal = Math.Min(e.HorizontalChange, designerItem.ActualWidth - designerItem.MinWidth);
Canvas.SetLeft(designerItem, Canvas.GetLeft(designerItem) + deltaHorizontal);
designerItem.Width -= deltaHorizontal;
break;
case HorizontalAlignment.Right:
deltaHorizontal = Math.Min(-e.HorizontalChange, designerItem.ActualWidth - designerItem.MinWidth);
designerItem.Width -= deltaHorizontal;
break;
default:
break;
}
}
e.Handled = true;
}
调整课程大小:
session = Session()
session.get(url)
getSoup(session)
def getSoup(session):
soup = BeautifulSoup(#sessiondatahere, "html.parser")
return soup
现在,如果我选中Move和resize复选框,每个矩形都可以移动并获得一个额外的边框来调整大小,但是当我尝试更改它的大小时,它只会改变内容控件的大小,并且矩形移动在其中。