colors - 在 Tcl 中操纵颜色

标签 colors tcl tk-toolkit

我想要一种颜色并获得更深的颜色。颜色可以采用 Tcl 中允许的颜色形式,即 blue#0000FF 或 tcl 识别为颜色的任何其他形式。

有办法做到这一点吗?

我需要的示例是,当我获得一种颜色时,我想从其红色、蓝色和绿色值中减去一个常数(或常数部分,即 * 0.8),使其成为相同颜色的较暗阴影。

最佳答案

要获取颜色的 RGB 值,请使用 winfo rgb:

lassign [winfo rgb . $thecolor] r g b

唉,您返回的值在 0–65535 范围内。当你想将它们重新打包成可解析的颜色时,你需要做一些工作:

set thecolor [format "#%02x%02x%02x" [expr {$r/256}] [expr {$g/256}] [expr {$b/256}]]

因此,要获得更深的颜色,请执行以下操作:

proc darker {color {ratio 0.8}} {
    lassign [winfo rgb . $color] r g b

    set r [expr {$r * $ratio}]
    set g [expr {$g * $ratio}]
    set b [expr {$b * $ratio}]

    return [format "#%02x%02x%02x" \
            [expr {int($r/256)}] [expr {int($g/256)}] [expr {int($b/256)}]]
}

关于colors - 在 Tcl 中操纵颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18814641/

相关文章:

fonts - 如何更改 ttk::button (主题小部件)中的字体和字体大小?

javascript - 动态颜色编码数字

arrays - swift 的 iOS。当我尝试改变按钮数组时程序崩溃

arrays - 返回数组列表

c++ - 使用 TCL/TK8.4 编译 c++ 应用程序以便它可以在 TCL/TK8.5 系统上运行的正确方法是什么?

Python-为什么不同的Tk标签显示为相同的坐标和不同的对象?

firefox - 为什么我的图像颜色与 FireFox 中的背景颜色不匹配?

python - 用于比较 Cielab 颜色的 Delta E 函数返回值的区间是多少?

REGEX 非捕获组正在使用 TCL 捕获

linux - 执行 "font actual system"时 tkdiff 空白错误消息