簡體   English   中英

在 Windows 暗模式下獲取強調色

[英]Get accent color in Windows dark mode

使用 electron 進行程序構建

想法:
我希望我的程序的強調色與 Windows 中的強調色相同。

問題:
對於 Windows 的 Light Mode,一切正常,通過的顏色與 Windows 強調色相匹配。 但是當切換到深色模式時,我仍然會得到淺色模式的強調色。

可能的解決方案:
暗模式強調色的 Windows 選擇如何工作? 顏色是否總是增加一定的亮度級別? 還是有預先保存的模式?


這是我當前的代碼:

main.js

let color = systemPreferences.getAccentColor()

  mainWindow.on('ready-to-show', function() {
    mainWindow.webContents.send('accColor', {'Color': color});
  })

ipc.js

ipc.on('accColor', (evt, message) => {
    let color = message['Color']
    const hex2rgb = (hex) => {
        const r = parseInt(hex.slice(1, 3), 16)
        const g = parseInt(hex.slice(3, 5), 16)
        const b = parseInt(hex.slice(5, 7), 16)
        return [ r, g, b ]
    }
    let baseRGB = hex2rgb('#' + color)
    document.querySelector('body').style.setProperty('--accent-default-rgb', baseRGB)
})

雖然我找不到返回暗模式強調色值的 function,但我能夠更改顏色的亮度,從而創建了一個合適的解決方案。


這是我添加的代碼:

ipc.js

function adjustDark(color, amount) {
    return '#' + color.replace(/^#/, '').replace(/../g, color => ('0'+Math.min(255, Math.max(0, parseInt(color, 16) + amount)).toString(16)).substr(-2));
}


let darkHEX = adjustDark(color, 96)
let darkRGB = hex2rgb(darkHEX)
document.querySelector('body').style.setProperty('--accent-default-rgb', darkRGB)


adjustDark() 的源代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM