【发布时间】:2015-04-23 05:41:46
【问题描述】:
我有一个windows窗体的PictureBox控件,里面画了一个可移动的矩形,我的PictureBox的大小会根据矩形的位置而增加,当PictureBox的大小大于特定大小时会出现滚动条。
public void PicBox_MouseDown(object sender, MouseEventArgs e)
{
if (rect.Contains(new Point(e.X, e.Y)))
{
mMove = true;
}
oldX = e.X;
oldY = e.Y;
}
public void Picbox_MouseUp(object sender , MouseEventArgs e)
{
mMove = false;
}
public void Picbox_MouseMove(object sender,MouseEventArgs e)
{
if (mMove)
{
picBox.Cursor = Cursors.Cross;
rect.X = rect.X + e.X - oldX;
rect.Y = rect.Y + e.Y - oldY;
}
oldX = e.X;
oldY = e.Y;
picBox.Invalidate();
}
public void Picbox_MousePaint(object sender, PaintEventArgs e)
{
picBox.Invalidate();
picBox.Size = new Size((rect.Width + rect.X) + 10, (rect.Height + rect.Y) + 10);
Draw(e.Graphics);
}
在第一次显示带有图片框的表单时
拖动矩形后,pictureBox 的大小增加并出现滚动条
这里一切正常,但我的问题是无论图片框的大小是多少,滚动条在我向下拖动时都可以正常工作,但是当矩形被向上拖动时,如果图片框的边缘符合表格整个滚动条恢复正常,看下面的图片你就能明白我想说什么了
如何解决这个问题,有没有另一种方法可以根据 pictureBox 的宽度增加滚动?我是新手。
矩形的行为就好像 X 和 Y 坐标是相对于 winform 而不是图片框进行跟踪的。
我可以将图片框作为我的绘图的父级吗?
【问题讨论】:
-
不确定您想要什么,但获得滚动 PB 的常用方法是将 PictureBox 放在 Panel 中,其中 AutoCcroll=true 用于 Panel 和 false 用于 PictureBox。
-
当我垂直拖动矩形并将矩形的位置和高度分配给图片框的大小时,图片框的高度会增加,例如图片框.Size = Rectangle.Height + Rectangle.Y 所以当我向下拖动它并出现滚动条时,图片框的高度会增加,但是当我向上拖动它时,如您在最后一张图片中看到的那样,当图片框位于表单边缘上方时,滚动条就消失了。
-
这就是你所拥有的,如果是的话,问题是什么,或者你想要的是什么? - 另外:
Picbox_MousePaint和Draw是什么?拖动代码在哪里? -
当图片框在表单边缘上方时 是吗?您在哪里更改 Top 或 Y 值??
-
当图片框高于边缘时是。我已经更新了代码,Draw 方法只是绘制矩形和节点
标签: c# .net winforms picturebox