На англоязычном форуме появился новый участник с новыми интересными плагинами. О некоторых из них хотелось бы рассказать нашим пользователям. Многие из плагинов особенно понравятся новичкам. С них и начнем.
Layer Cake - Плагин для поворота рисунка по частям
Этот плагин разбивает изображение на окружности и поворачивает каждую из них. С помощью этого плагина можно создавать причудливые узоры и портить фотографии, создавая абстракции. Доступны параметры, влияющие на угол поворота и количество окружностей. Ссылка на страницу англоязычного форума здесь.
После установки плагин доступен в меню "Эффекты" - "Искажения" - "Layer Cake".
Автор публикует плагин с открытым кодом (это для тех, кто читал раздел как сделать свой эффект (плагин) для paint.net)
Код: Выделить всё
// Submenu: Distort
// Name: Layer Cake
// Title: Layer Cake - v1.0
// Author: TechnoRobbo
// URL: http://www.technorobbo
#region UICode
double Amount1 = 1.5;//[-10,10]Rotation
double Amount2 = 5;//[1,30]Slices
#endregion
void Render(Surface dst, Surface src, Rectangle rect)
{
Rectangle selection = EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt();
int CenterX = ((selection.Right - selection.Left) / 2)+selection.Left;
int CenterY = ((selection.Bottom - selection.Top) / 2)+selection.Top;
double radX = (selection.Right - selection.Left) / 2;
double radY = (selection.Bottom - selection.Top) / 2;
double offrads = 0;
double rads = 0;
double slices = 0;
int newx = 0;
int newy = 0;
double maxrad = Math.Sqrt(radX * radX + radY * radY);
ColorBgra CP;
rads= Math.PI * Amount1;
for (int y = rect.Top; y < rect.Bottom; y++)
{
for (int x = rect.Left; x < rect.Right; x++)
{
slices = Math.Sqrt((x-CenterX) * (x-CenterX) + (y-CenterY)* (y-CenterY)) * rads / maxrad;
offrads = Math.Truncate(slices / (rads / Amount2)) * (rads / Amount2);
newx=CenterX + (int)(Math.Cos(offrads) * (x-CenterX) + Math.Sin(offrads) * (y-CenterY));
newy=CenterY + (int)(Math.Cos(offrads) * (y-CenterY) - Math.Sin(offrads) * (x-CenterX));
CP = src.GetBilinearSampleWrapped(newx,newy);
dst[x,y] = CP;
}
}
}