Я видел несколько разных подходов к этому, но я использую универсальный служебный метод как таковой:
public static T DeepClone<T>(T obj)
{
using (var ms = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);
ms.Position = 0;
return (T) formatter.Deserialize(ms);
}
}
Примечания:
[Serializable]
для этого для работы. Ваш исходный файл должен включать следующий код:
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
Мой skimpygimpy.sourceforge.net будет рисовать и текст, но он не будет редактировать существующие изображения (но он, конечно, может быть изменен для этого, если вы хотите погрузиться). Это чистый питон. посмотрите, как это работает в приложениях Google, например на http://piopio.appspot.com/W1200_1400.stdMiddleware#Header51 ,
Это экспериментальный сайт, с которым я буду возиться. Ссылка может не работать вечно.
Я не знаю, есть ли у него все функции, которые вы хотите, но я возился с PNGCanvas, и он делает некоторые вещи, которые я делал раньше с PIL