Страница 2 из 2

Re: Вырезать цвет

Добавлено: 25 мар 2012, 09:42
Svenlana
В ответ нуждающимся.
Под примером № 3 (где красная роза на черно-белом фоне) белый квадратик "вложение". Там "прячется" архив с эффектом "Вырезать цвет". Его нужно скачать, разархивировать, содержимое архива вырезать и вставить по адресу: Локальный диск С:/Program Files/Paint.NET/Effects

Re: Вырезать цвет

Добавлено: 24 июн 2014, 15:11
MrSeFeRus
Ты тупая что-ли? Люди у тебя спрашивают где конкретно скачать этот эффект, ты им фигню отвечаешь

Re: Вырезать цвет

Добавлено: 25 июн 2014, 00:09
Lynx
MrSeFeRus » Вчера, 15:11
Ты тупая что-ли? Люди у тебя спрашивают где конкретно скачать этот эффект, ты им фигню отвечаешь
Для деревянных буратино , мнящих себя не тупыми, показываю уже на скриншоте..

На первой странице этой темы,
в первом посте, есть фото с розой и под ней окошко-вкладка"вложение" где можно скачать архив с плагином,
т.е. нажать на ссылку в окошке , что делать дальше человек подробно написал вверху.
Изображение

Re: Вырезать цвет

Добавлено: 11 июл 2014, 16:00
nyukers
Не будем наезжать друг на друга.
Но источник самого эффекта находящийся аж под 3-м(!) примером никак очевидным не назовешь. :Search:

Re: Вырезать цвет

Добавлено: 13 июл 2014, 23:41
Lynx
Ну да, особенно если понятия не иметь как скачивать и где нажимать и при этом еще пояснения и комменты не уметь
прочесть внимательно.. беда да и только ;)

Re: Вырезать цвет

Добавлено: 27 июл 2014, 21:43
arvalkom
В версии 4.0.3 работает. Спасибо.

Re: Вырезать цвет

Добавлено: 11 июл 2015, 21:49
xmario
Исходный код эффекта "вырезать цвет" для CodeLab

Код: Выделить всё

#region UICode
ColorBgra Amount1 = ColorBgra.FromBgr(0,0,0); // Цвет, который оставляем, остальные цвета станут прозрачными
int Amount2 = 40; // [0,90] Погрешность в определении цвета
#endregion

void Render(Surface dst, Surface src, Rectangle rect)
{
    // Delete any of these lines you don't need
    Rectangle selection = this.EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt();

    int R0 = Amount1.R;
    int G0 = Amount1.G;
    int B0 = Amount1.B;
    
    ColorBgra CurrentPixel;
    for (int y = rect.Top; y < rect.Bottom; y++)
    {
        for (int x = rect.Left; x < rect.Right; x++)
        {
            CurrentPixel = src[x,y];
            int R1 = (byte)CurrentPixel.R;
            int G1 = (byte)CurrentPixel.G;
            int B1 = (byte)CurrentPixel.B;
            
            float Angle1 = (float)Math.Acos((R0*R1+G0*G1+B0*B1)/(Math.Sqrt((R0*R0+G0*G0+B0*B0))*Math.Sqrt((R1*R1+G1*G1+B1*B1))));
            
            if ((Angle1*180/3.1415926) <= Amount2/2)
            {
                dst[x,y] = CurrentPixel;
            }
            else
            {
                CurrentPixel.A = 0;
                dst[x,y] = CurrentPixel;
            }
        }
    }
}

Re: Вырезать цвет

Добавлено: 11 июл 2015, 21:54
xmario
Исходный код варианта эффекта "изменить цвет" для CodeLab

Код: Выделить всё

#region UICode
ColorBgra Amount1 = ColorBgra.FromBgr(0,0,0); // Control Description
int Amount2 = 40; // [0,90] Slider 1 Description
#endregion

void Render(Surface dst, Surface src, Rectangle rect)
{
    // Delete any of these lines you don't need
    Rectangle selection = this.EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt();
    long CenterX = (long)(((selection.Right - selection.Left) / 2)+selection.Left);
    long CenterY = (long)(((selection.Bottom - selection.Top) / 2)+selection.Top);
    ColorBgra PrimaryColor = (ColorBgra)EnvironmentParameters.PrimaryColor;
    ColorBgra SecondaryColor = (ColorBgra)EnvironmentParameters.SecondaryColor;
    int BrushWidth = (int)EnvironmentParameters.BrushWidth;

    int R0 = Amount1.R;
    int G0 = Amount1.G;
    int B0 = Amount1.B;
    
    ColorBgra CurrentPixel;
    for (int y = rect.Top; y < rect.Bottom; y++)
    {
        for (int x = rect.Left; x < rect.Right; x++)
        {
            CurrentPixel = src[x,y];
            int R1 = (byte)CurrentPixel.R;
            int G1 = (byte)CurrentPixel.G;
            int B1 = (byte)CurrentPixel.B;
            
            float Angle1 = (float)Math.Acos((R0*R1+G0*G1+B0*B1)/(Math.Sqrt((R0*R0+G0*G0+B0*B0))*Math.Sqrt((R1*R1+G1*G1+B1*B1))));
            
            if ((Angle1*180/3.1415926) <= Amount2/2)
            {
                dst[x,y] = CurrentPixel;
            }
            else
            {
                CurrentPixel.A = 0;
                dst[x,y] = CurrentPixel;
            }
        }
    }
}