Использование и трансформация объектов структуры System.Drawing.Point
Необходимо создать изображение на основе объектов структуры Point. Имеется два объекта
var orig = new Point(point.X, point.Y);
var inversed = new Point(size.Width - point.X - 1, point.Y);
Дак вот, можно ли объединить их в одну картинку, один объект структуры Point? Они создаются на основе одной картинки, просто первый объект - изначальная картинка, а второй - отражённая по горизонтали. Желательно также, чтобы это всё было в переменной.
Создавая вот такой метод изображение отражается по горизонтали.
mainForm.AddFilter(new TransformFilter(
"Мозаика(Должна быть)",
size => size,
(point, size) =>
{
var orig = new Point(point.X, point.Y);
var inversed = new Point(size.Width - point.X - 1, point.Y);
return inversed;/*заглушка*/
}
));
Метод является делегатом вот этого класса.
public class TransformFilter : TransformFilter<EmptyParameters>
{
public TransformFilter(string name, Func<Size, Size> sizeTransformer,
Func<Point, Size, Point> pointTransformer)
: base(name, new FreeTransformer(sizeTransformer, pointTransformer)) { }
}
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
По сути здесь просто тот же пересчет координат.
mainForm.AddFilter(new TransformFilter(
"Мозаика",
size => size,
(point, size) =>
{
point.X = (point.X < size.Width / 2 ? point.X : size.Width - point.X - 1) * 2;
point.Y = (point.Y < size.Height / 2 ? point.Y : size.Height - point.Y - 1) * 2;
return point;
}
));
