Я хочу протестировать нарисованное растровое изображение, чтобы увидеть, видна ли данная точка в непрозрачных пикселях изображения.
Например, чтобы выполнить этот тест для всего прямоугольника растрового изображения, выбудет делать что-то вроде этого:
Bitmap bitmap = new Bitmap("filename.jpg");
GraphicsPath path = new GraphicsPath();
Rectangle bitmapRect = new Rectangle(x, y, bitmap.Width, bitmap.Height);
path.AddRectangle(bitmapRect);
if (path.IsVisible(mouseLocation))
OnBitmapClicked();
Однако, если у меня есть растровое изображение непрямоугольного элемента, и я хочу иметь возможность проверить, нажимают ли они на непрозрачную область, есть лиПоддерживается ли в платформе .NET способ сделать это?
Единственный способ, которым я мог бы подумать, - это заблокировать растровые байты в массиве и выполнить итерацию по нему, добавив каждую координату x, y, которая не является-прозрачный для массива структур Point.Затем используйте эти точечные структуры для сборки GraphicsPath.
Так как эти точки будут основаны на нуле, мне нужно будет сместить положение моей мыши на расстояние между координатами x, y, в которых рисуется изображение, и 0, 0.Но таким образом я мог бы по существу использовать один и тот же GraphicsPath для каждого изображения, если бы я рисовал его несколько раз, если изображение не перекошено или не масштабировано по-разному.
Если это единственный хороший маршрут, как бы я добавилточки к GraphicsPath?Рисовать линии от точки к точке?Нарисовать замкнутую кривую?