IList<System.Windows.Point> points = new IList<System.Windows.Point>();
// ...
System.Drawing.PointF[] pointsArray = points.ConvertAll(p => new System.Drawing.Point(p.x, p.y));
Конверт из IList<System.Windows.Point> в System.Drawing.PointF[]
В общем, есть IList<System.Windows.Point>, надо конвертить его в System.Drawing.PointF[], только не через циклы. Помогите пожалуйста выполнить данную задачу, возможно, с помощью неуправляемого кода
Код:
Или то же самое без лямбда-выражений:
Код:
public static System.Drawing.PointF PointToPointF(System.Windows.Point p) {
return new PointF(p.x, p.y);
}
// ...
IList<System.Windows.Point> points = new IList<System.Windows.Point>();
// ...
System.Drawing.PointF[] pointsArray = points.ConvertAll(new Converter<System.Windows.Point, System.Drawing.PointF>(PointToPointF));
return new PointF(p.x, p.y);
}
// ...
IList<System.Windows.Point> points = new IList<System.Windows.Point>();
// ...
System.Drawing.PointF[] pointsArray = points.ConvertAll(new Converter<System.Windows.Point, System.Drawing.PointF>(PointToPointF));
А за решение спасибо
P.S. А на огромных объемах проблем со скоростью не должно возникнуть?
В мсдн пишут что ConvertAll поэлементно преобразует, отсюда и появился вопрос, будет ли рациональным использование именно этого способа в случае с большим количеством элементов
Upd: К примеру, то же самое можно реализовать через List<T>.ToArray(), List<T>.CopyTo(). Но поэлементное копирование все равно неизбежно.
ясно, спасибо