В сценариях photoshop, как вы производите цикл каждого выбора и применяете эффект градиента во время каждой итерации?

Преобразование в JAVA довольно простое, но нужно некоторое понимание. Как поясняют в JLS для целых операций :

Если целочисленный оператор, отличный от оператора сдвига, имеет хотя бы один операнд типа long, то операция выполняется используя 64-битную точность, а результат численного оператора имеет тип long. Если другой операнд не длинный, он сначала расширяется (§5.1.5), чтобы печатать длинным путем численного продвижения (§5.6).

blockquote>

И пример всегда лучший способ перевести JLS;)

int + long -> long
int(1) + long(2) + int(3) -> long(1+2) + long(3)

В противном случае операция выполняется с использованием 32-битной точности , а результат численного оператора имеет тип int. Если какой-либо операнд не является int, он сначала расширен, чтобы вводить int посредством числовой рекламы.

blockquote>
short + int -> int + int -> int

Небольшой пример использования Eclipse, чтобы показать, что даже добавление двух short s не будет таким простым:

short s = 1;
s = s + s; <- Compiling error

//possible loss of precision
//  required: short
//  found:    int

Это потребует литье с возможной потерей точности.

То же самое верно для операторов с плавающей запятой

Если хотя бы один из операндов числовой оператор имеет тип double, тогда операция выполняется с использованием 64-разрядной арифметики с плавающей запятой, а результатом численного оператора является значение типа double. Если другой операнд не является двойным, он сначала расширяется (§5.1.5), чтобы набирать double путем числовой рекламы (§5.6).

blockquote>

Таким образом, продвижение выполняется по float в double.

И сочетание как целочисленного, так и плавающего значения приводит к плавающим значениям, указанным в

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

blockquote>

Это верно для двоичных операторов, но не для «операторов присваивания», таких как +=

Простой рабочий пример достаточно, чтобы доказать это

int i = 1;
i += 1.5f;

Причина в том, что здесь неявное выполнение сделано, это будет выполняться подобно

i = (int) i + 1.5f
i = (int) 2.5f
i = 2

0
задан gman 14 July 2018 в 02:38
поделиться

1 ответ

Нет подвыборов, однако вы можете преобразовать выделение в объект Path, каждый отдельный путь может использоваться для итерации. В зависимости от выбранного вами выбора (диапазон цветов может давать полупрозрачные выделения), вы можете сначала сохранить текущий выбор в качестве отдельного канала и изменить выбор, чтобы сделать его 100% непрозрачным.

Чтобы вычислить центр, я думаю, что-то вроде этого должно работать: Найти центральную точку многоугольника в JavaScript , потому что вы можете получить всю координату для контрольных точек каждого подпути.

И тогда вам понадобится для создания выборочных островов один за другим, чтобы градиенты не влияли друг на друга. Для этого вы можете использовать точки пути в качестве точек для выбора Лассо, а затем пересечь эти лассо-выборки с исходным каналом выбора, чтобы восстановить потерянную прозрачность.

0
ответ дан Sergey Kritskiy 17 August 2018 в 12:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: