Я хотел изменить цвет на определенный уровень яркости - независимо от того, какой яркостью был цвет раньше - вот простая функция JS, которая, кажется, работает хорошо, хотя я уверен, что она может быть короче
function setLightPercentage(col: any, p: number) {
const R = parseInt(col.substring(1, 3), 16);
const G = parseInt(col.substring(3, 5), 16);
const B = parseInt(col.substring(5, 7), 16);
const curr_total_dark = (255 * 3) - (R + G + B);
// calculate how much of the current darkness comes from the different channels
const RR = ((255 - R) / curr_total_dark);
const GR = ((255 - G) / curr_total_dark);
const BR = ((255 - B) / curr_total_dark);
// calculate how much darkness there should be in the new color
const new_total_dark = ((255 - 255 * (p / 100)) * 3);
// make the new channels contain the same % of available dark as the old ones did
const NR = 255 - Math.round(RR * new_total_dark);
const NG = 255 - Math.round(GR * new_total_dark);
const NB = 255 - Math.round(BR * new_total_dark);
const RO = ((NR.toString(16).length === 1) ? "0" + NR.toString(16) : NR.toString(16));
const GO = ((NG.toString(16).length === 1) ? "0" + NG.toString(16) : NG.toString(16));
const BO = ((NB.toString(16).length === 1) ? "0" + NB.toString(16) : NB.toString(16));
return "#" + RO + GO + BO;}
При использовании синтаксиса свойств PowerShell поймает все исключения. Если вы хотите увидеть исключения, вам нужно будет использовать синтаксис метода. Например, вместо:
$web.SiteUsers
Вы использовали бы:
$web.get_SiteUsers()
Было бы неплохо, если Set-StrictMode разрешил бы исключения, но это не так.
Основная причина такого поведения связана с форматированием. Существует много часто используемых свойств, которые генерируют исключения с использованием форматирования по умолчанию и загромождают вывод сообщениями об ошибках.
Это говорит о том, что PowerShell кажется разумным только исключать исключения форматирование. Вы можете использовать сайт Microsoft Connect для предоставления обратной связи. Например, этот пункт жалуется на эту точную проблему: http://connect.microsoft.com/PowerShell/feedback/details/533233/exceptions-thrown-in-property-getters-are-silently-ignored