Применение рефлексии для создания плагинов - Создание плагина
ОГЛАВЛЕНИЕ
Создание плагина
Для создания плагинов создаем новый проект 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 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.
Кондратьев Денис