【问题标题】:How to get the rgb value on the screen如何获取屏幕上的rgb值
【发布时间】:2021-07-07 18:36:18
【问题描述】:

我的代码在这里只显示一个简单的调色板:

@Composable
fun ColorPicker(modifier: Modifier = Modifier) {
    Box(
        modifier = modifier
            .fillMaxSize()
            .background(Brush.horizontalGradient(colors()))
    ) {

    }
}

fun colors(n: Int = 359): List<Color> {
    val cols = mutableListOf<Color>()
    for (i in 0 until n) {
        val color = java.awt.Color.getHSBColor(i.toFloat() / n.toFloat(), 0.85f, 1.0f)
        cols.add(Color(color.red, color.green, color.blue, color.alpha))
    }
    return cols
}

看起来不错:

但现在我想在用户单击调色板时获取 RGB 值。我该怎么做? (这是 Jetpack Compose Desktop,但应该和 Android 上的一样)

【问题讨论】:

  • 我不知道这是否是一个好方法,但它使用可点击和机器人类工作。所以在点击时我只是得到当前鼠标位置的 rgb。

标签: kotlin android-jetpack-compose compose-desktop


【解决方案1】:

您可以改为为每种颜色创建宽度非常小的Cards,并从它们的onClicks 修改状态持有者

例如,

var rgb by mutableStateOf ("") // displays RGB values
Text(rgb)
Layout( content = {
for (i in 0 until 359) {

        val color =
 java.awt.Color.getHSBColor(i.toFloat() / n.toFloat(), 0.85f, 1.0f)

        Card(
                   Modifier.background(Color(
                                                                      color.red, 
                                                                      color.green, 
                                                                      color.blue, 
                                                                      color.alpha
                                                                    )
                                                          ),
                  onClick = { rgb = color. // Assign appropriate value
                  }
    
}
){measurables, constraints -> 
val placeables = measurables.map{
it.measure(constraints.maxWidth/measurables.size, constraints.maxHeight)
} 
int x = 0
layout(constraints.maxWidth, constraints.maxHeight){
placeables.forEach{
it.placeRelative(x, 0)
x+=it.width
}
}
}

这会平均分配宽度

【讨论】:

    猜你喜欢
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    相关资源
    最近更新 更多