Генерация цветов после наложения непрозрачности черного и белого - PullRequest
4 голосов
/ 31 августа 2011

Я даже не знаю, как описать то, что я хочу, но здесь идет.Предположим, у меня есть 3 текстовых поля, и я ввожу некоторый цветной шестнадцатеричный код в первое, я хочу нанести черный слой поверх него, установив непрозрачность на 50%, и получим полученный цвет во втором текстовом поле.То же самое, но с белым на третьем.

Позвольте мне объяснить: рассмотрите это изображение ниже:

enter image description here

В Photoshop у меня есть базовый слой, которыйвроде небесно-голубого цвета.Я создаю два слоя поверх него, один с черным, другой с белым, но у обоих непрозрачность 50%.Теперь я могу использовать палитру цветов (I), чтобы просто выбрать два нужных цвета.

Я должен был делать это безумное количество раз, поэтому мне было интересно, смогу ли я сделать это программно.

Я знаю, в идеале я должен был что-то опробовать, а затем выдать код, который не работает ... но это поставило меня в тупик настолько, что я даже не знаю, с чего начать.Самое близкое, что я видел, это Кулер , поэтому я думаю, что это возможно, по крайней мере, во флэш-памяти, но опять же, я не знаю, с чего начать.* Не могли бы вы, ребята, указать мне правильное направление?В идеале это было бы намного лучше, если бы это было выполнимо в jQuery, но я осмотрелся и не смог найти ничего похожего на это. Я не прошу рабочего решения , просто толчок в правильном направлении.

Если у вас есть какие-либо вопросы, пожалуйста, задавайте.

Технология недля меня важно, решение - мне больше всего нравится c # (по крайней мере, мне нравится думать, что я есть), но я новичок в php, flash.Jquery, я хорош в этом с большинством вещей (ну, а кто нет?) - все, что работает, хорошо для меня. Php и Flash, я научился этому как хобби просто для ознакомления.

Большое спасибо.

Ответы [ 3 ]

2 голосов
/ 31 августа 2011

Так что я могу приблизиться, но не совсем к вашим результатам, что, я думаю, является побочным эффектом .NET, использующего число в диапазоне 1..255 для альфы при создании цвета.

Но, тем не менее, я думаю, что это в значительной степени делает то, что вы хотите:

public class ColorUtility
{
    private Color color;

    public ColorUtility(Color original)
    {
        this.color = original;
    }

    public Color GetTransformedColor(Color overlay)
    {
        using(var bitmap = new Bitmap(1,1))
        {
            var g = Graphics.FromImage(bitmap);
            using(Brush baseBrush = new SolidBrush(this.color))
            {
                g.FillRectangle(baseBrush,0,0,1,1);
            }

            using(Brush overlayBrush = new SolidBrush(Color.FromArgb(127,overlay)))
            {
                g.FillRectangle(overlayBrush,0,0,1,1);
            }
            return bitmap.GetPixel(0, 0);
        }
    }
}

использование:

 var startColor = ColorTranslator.FromHtml("#359eff");
 var util = new ColorUtility(startColor);
 var blackOverlay = util.GetTransformedColor(Color.Black); // yields #9aceff
 var whiteOverlay = util.GetTransformedColor(Color.White); // yields #1b4f80

Близко к желаемым результатам, но не совсем.

РЕДАКТИРОВАНИЕ: Если вы измените альфа-значение на 128 в утилите, вы получите

Черный: # 9acfff
Белый: # 1a4f7f

Это может быть ближе к тому, что вы хотите, но это все еще не точно.

2 голосов
/ 31 августа 2011

Я знаю, что опаздываю на вечеринку, просто хотел показать другой способ сделать это.

Для этого есть плагин цвета jquery, я никогда этим не пользовался, но есть функция, которая выглядит так, как будто она делает то, что вам нужно .. xColor - это плагин, который вы ищете .. если вы перейдете в раздел комбинация , вы увидите, что он говорит, что он делает то, что вы хотите.

Я только что попробовал образец на jsfiddle , но результаты соответствуют Удивительный ответ Джейми . это выдает те же цвета результата, что и в коде Джейми. так что вы можете использовать любой, я думаю.

0 голосов
/ 31 августа 2011

Итак ... В чем проблема просто написать то, что вы точно сказали, используя технологию, которую вы знаете лучше всего?3 поля с цветами, ввод для процента непрозрачности и вывод в качестве смешанных цветов.(Я могу написать это на флэш-памяти, но я не уверен, что на этом сайте подходит приватная программа.)

Если вы не знаете, как смешивать цвета с непрозрачностью, эта ссылка должна помочь:

http://www.pegtop.net/delphi/articles/blendmodes/opacity.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...