[Swift] 중첩 색상을 생성합니다(알파 블렌딩)
구현
UIColor+overlayColor.swift
extension UIColor {
/// 色を重ね合わせたときの色を生成する
/// 参考 https://ja.wikipedia.org/wiki/アルファブレンド
func overlayColor(_ otherColor: UIColor) -> UIColor {
/// 背景
var (dstR, dstG, dstB, dstA) = (CGFloat(0), CGFloat(0), CGFloat(0), CGFloat(0))
/// 前景
var (srcR, srcG, srcB, srcA) = (CGFloat(0), CGFloat(0), CGFloat(0), CGFloat(0))
getRed(&dstR, green: &dstG, blue: &dstB, alpha: &dstA)
otherColor.getRed(&srcR, green: &srcG, blue: &srcB, alpha: &srcA)
let outA = srcA + dstA - dstA * srcA
let outR = (srcR * srcA + dstR * dstA * (1 - srcA)) / outA
let outG = (srcG * srcA + dstG * dstA * (1 - srcA)) / outA
let outB = (srcB * srcA + dstB * dstA * (1 - srcA)) / outA
return UIColor(red: outR,
green: outG,
blue: outB,
alpha: outA)
}
}
생성된 색
화살표로 표시된 부분이 이번에 작성한 메소드로 계산된 색입니다.
샘플 코드
Playground를 만들었습니다. 동작 확인을 하고 싶은 분은 이쪽으로부터 부디.
htps : // 기주 b. 코 m / zr 응 - s / 오 ぇ r ぁ y 코 r /
감사의 말
구현은 아래의 사이트를 참고로 했습니다.
Reference
이 문제에 관하여([Swift] 중첩 색상을 생성합니다(알파 블렌딩)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/zrn-ns/items/9d3b7a84bd72c2ede20a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)