Как узнать, содержит ли GraphicsPath точку в C#
я использую .NET чтобы нарисовать диаграмму, и я хочу выделить объекты, когда пользователь выполняет щелчок по ним. Это легко, когда фигура полностью содержится в прямоугольнике:
if (figure.Bounds.Contains(p)) // bounds is a rectangle
но я не знаю, как это сделать, если цифра сложная GraphicsPath
.
я определил следующее GraphicsPath
для фигуры (зеленый кружок).
Я хочу выделить фигуру, когда пользователь нажимает на нее. I хотел бы знать, если Point
содержится в GraphicsPath
.
какие идеи? Спасибо заранее.
2 ответов
Я не знаю DrawingPath (вы имеете в виду, наверное; графика.DrawPath), а GraphicsPath
имеет IsVisible метод, чтобы проверить, если точка находится в пути.
bool isInPath = graphicsObj.IsVisible(point)
используя обе .IsOutlineVisible and .IsVisible вместе охватывают все это, границу и внутри границы, для этого примера прямоугольника, но, как вы знаете, GraphicsPath может работать для разных фигур.
bool b = gp.IsVisible(point) || gp.IsOutlineVisible(point, pen);
для него в коде
Rectangle r = new Rectangle(new Point(50, 100), new Size(500, 100));
bool b;
// say Point p is set.
// say Pen pen is set.
using (var gp = new GraphicsPath())
using (var pen = new Pen(Color.Black, 44)) {
gp.AddRectangle(r);
bool b = gp.IsVisible(point) || gp.IsOutlineVisible(point, pen);
}