Применение рефлексии для создания плагинов Страница 3. Создание плагина
|
Страница 3 из 3 Создание плагина Для создания плагинов создаем новый проект ClassLibrary, добавляем ссылку на сборку Interface и реализуем свойства и методы интерфейса IPlugin. Для примера были разработаны 2 плагина: ReverseTransform для отражения изображения по вертикали и RandomTransform для внесения случайного шума в изображение. Приведем их код и результаты применения к изображению. public class ReverseTransform : Interface.IPlugin { public string Name { get { return "Переворот изображения"; } } public string Version { get { return "1.0"; } } public string Author { get { return "Кондратьев Денис"; } } public void Transform(Interface.IMainApp app) { Bitmap bitmap = app.Image; for (int i = 0; i < bitmap.Width; ++i) for (int j = 0; j < bitmap.Height / 2; ++j) { Color color = bitmap.GetPixel(i, j); bitmap.SetPixel(i, j, bitmap.GetPixel(i, bitmap.Height - j - 1)); bitmap.SetPixel(i, bitmap.Height - j - 1, color); } app.Image = bitmap; } } public class RandomTransform : Interface.IPlugin { public string Name { get { return "Случайная трансформация"; } } public string Version { get { return "1.0"; } } public string Author { get { return "Кондратьев Денис"; } } public void Transform(Interface.IMainApp app) { Bitmap bitmap = app.Image; Random rand = new Random(DateTime.Now.Millisecond); int pixels = (int)(0.1 * bitmap.Width * bitmap.Height); for (int i = 0; i < pixels; ++i) bitmap.SetPixel(rand.Next(bitmap.Width - 1), rand.Next(bitmap.Height), Color.FromArgb(rand.Next(255), rand.Next(255), rand.Next(255))); app.Image = bitmap; } } Поворот изображения плагином ReverseTransform | Внесение случайного шума плагином RandomTransfor | Свойства для получения номера версии плагина и авторства в нашей программе не используются, но с их помощью можно выводить информацию об установленных плагинах, как в Adobe Photoshop. После компиляции нужно поместить плагины в папку с приложением MainApp. Кондратьев Денис |