我有一个程序,我可以用鼠标在四个方向中的任何一个方向绘制一个矩形。
这些矩形用于pictureBox以裁剪图像的一部分。
必须绘制这些矩形…
您有给定比率和尺寸的样本矩形S. sw, sh (在您的示例中为320x200)
sw, sh
鼠标位置形成具有尺寸的新矩形N. nw, nh (绝对值!)
nw, nh
据我所知,你的任务是用与S相同的比例将矩形刻入矩形N,得到带基点的矩形R (rx0, ry0) 和尺寸 (rw, rh)
(rx0, ry0)
(rw, rh)
nx0 = min(e.x, startpos.x) ny0 = min(e.y, startpos.y) nw = abs(e.x - startpos.x) nh = abs(e.y - startpos.y) if nw * sh >= nh * sw then // if N is "too wide" rh = nh rw = rh * sw / sh ry0 = ny0 rx0 = nx0 + (nw - rw) / 2 else // N is "too slim" rw = nw rh = rw * sh / sw rx0 = nx0 ry0 = ny0 + (nh - rh) / 2
然后
mRect = New Rectangle(rx0, ry0, rx0 + rw, ry0 + rh)