(BYTE)( 255 - 255 * iRow / (iHeight-1) )
iRow
находится между 0
и (iHeight-1)
, поэтому, если мы хотим получить значение от 0 до 1, нам нужно разделить на (iHeight-1)
. На самом деле нам нужно значение от 0 до 255, поэтому мы просто увеличиваем на 255. Наконец, мы хотим начать с максимума и опуститься до минимума, поэтому мы просто вычтем значение из 255.
В конечных точках:
iRow = 0
255 - 255 * 0 / (iHeight-1) = 255
iRow = (iHeight-1)
255 - 255 * (iHeight-1) / (iHeight-1) = 255 - 255 * 1 = 0
Обратите внимание, что iHeight
должно быть больше или равно 2, чтобы это работало (вы получите деление на ноль, если оно равно 1).
Edit:
Это приведет к тому, что только последняя строка будет иметь альфа-значение 0. Вы можете получить более равномерное распределение альфа-значений с помощью
(BYTE)( 255 - 256 * iRow / iHeight )
однако, если iHeight меньше 256, последняя строка не будет иметь альфа-значение 0.