为什么在PictureBox上翻译矩形(GraphicsPath)时出现错误的矩形(翻译)

锡普

活跃的成员
已加入
2019年3月6日
留言内容
27
地点
班加罗尔
编程经验
Beginner
  1. 我在c#中的PictureBox上绘制了一个矩形形状(GraphicsPath)。链接
  2. 如果用户单击矩形形状并将鼠标光标移动到图片框上,我将选择鼠标点(x,y),我还将收集鼠标移动点。鼠标移动点原为
  3. 我想根据图片框上的鼠标移动进行矩形平移。
  4. 翻译后,我试图绘制已翻译的矩形,但是矩形的坐标是错误的(它们未绘制在光标的位置)。错误的座标翻译后的图片 和矩形点在翻译之前 链接
  5. 无法弄清楚。帮助我。如果您有材料,请告诉我。
  6. 试图做到这一点 链接1, 链接2, 链接3 做同样的结果。
C#:
Rectangle temp=new Rectangle();
GraphicsPath path=new GraphicsPath();
Graphics g=Graphics.FromImage(m_ParentImage);
//defined orginal rectangle for translation
Rectangle rect =new Rectangle();
rect.X=zone.ZonePoints[0].X;
rect.Y=480-zone.ZonePoints[0].Y;
rect.Width=Math.Abs(zone.ZonePoints[2].X-rect.X);
rect.Height=Math.Abs((480-zone.ZonePoints[2].Y)-rect.Y);
path.AddRectangle(rect);

temp=rect;
//getting mouse move point.
Point xyPoint=new Point();
xyPoint.X=m_right_button_move_x;
xyPoint.Y=m_right_button_move_y;
//defining translation matrix
Matrix MatTranslate=new Matrix();
MatTranslate.Translate(xyPoint.X,xyPoint.Y);
path.Tranform(MatTranslate);
//getting new rectanglef with translated points
RectangleF temprect=path.GetBounds();
Pen mpen=new Pen(Color.Red,2);
g.DrawPath(mpen,path);//drawing the new rectangle on the picture box with color red.
 
最佳 底部