2

私の英語が下手でも、誰かがこの質問を手伝ってくれることを願っています. Im drawing では、画面上の四角形に変換があり、正常に動作する Graphics があるとしますが、ユーザーはその四角形内の点をクリックできるようにする必要があり、四角形が変身。ユーザーがクリックした四角形を知るには、他の言葉が必要です。私の言いたいことを理解してくれる人がいることを願っています。ありがとう!

多分これは問題を理解するのに役立ちます

Matrix m = new Matrix();
m.RotateAt(rot, new PointF(imgrect.Left + imgrect.Width / 2, imgrect.Top + imgrect.Height / 2));
Graphics.Transform = m;
Graphics.DrawImage(img, imgrect);
4

2 に答える 2

0

マウス座標を長方形のオブジェクト空間に入れる必要があります

bool RotatedRectContains(Rectangle rect, Matrix transform, Point mousePos)
{
  Point[] pts = { mousePos };
  Matrix inverseMat = transform.Clone();
  inverseMat.Inverse();
  inverseMat.TransformPoints(pts);

  return rect.Contains(pts[0]);
}
于 2013-06-25T11:48:54.657 に答える
0

ups... ユーザーがポイントをクリックした場合、変換は次のようになります。 Point[] pts = new Point[1]; pts[0] = p; m.Invert(); m.VectorTransformPoints(pts); pts[0].X += (int)m.OffsetX; pts[0].Y += (int)m.OffsetY;

pts[0] を使用して、クリックされた正方形を見つけることができます。

于 2013-06-25T12:22:25.963 に答える