我正在try 实现一个功能来检测漫画泡沫语音.

我正在拍摄我的设备的屏幕截图并接收来自API的响应,一旦它返回,我就会用画布绘制一些矩形.但我似乎无法以任何方式对齐这些矩形.

我的代码:

@Composable
internal fun ScreenShotDrawSpeech(
    bubbleDomain: BubbleDomain,
    modifier: Modifier = Modifier,
) {
    Canvas(
        modifier = modifier
            .fillMaxSize()
            .background(background_overlay),
        onDraw = {
            bubbleDomain.predictions.forEach { prediction ->
                val left = prediction.x
                val top = prediction.y

                drawRect(
                    color = Color.Red,
                    topLeft = Offset(left.toFloat(), top.toFloat()),
                    size = Size(prediction.width.toFloat(), prediction.height.toFloat()),
                    style = Stroke(width = 2f),
                )
            }
        },
    )
}

结果:

Screenshot_20240506_091529

推荐答案

您预测的坐标似乎指定了气泡的中心.

使用此来确定矩形的lefttop:

val left = prediction.x - prediction.width / 2
val top = prediction.y - prediction.height / 2

Android相关问答推荐

更新画布上的绘图以具有水平填充

有没有办法知道每台安卓设备上的通知限制?

Kotlin DSL:为什么我可以从Play Store获取发布版本的日志(log)?

react 本机生成失败,出现异常.错误:无法确定';<;宏/>;的类型

如何在初始合成期间在可组合函数中调用/获取远程API中的数据[防止无限重组]

Modifer.Align()不适用于行/列/框中的文本.未解决的作用域实例错误

如何解决Gradle构建错误:java.lang.NoSuchMethodError

页面更改时不显示 cogo toast 消息

由于Xcode运行脚本阶段没有指定输出,在IOS Emulator中的KMM项目中生成失败

如何在Android Studio中删除项目

视觉转换后获取文本

如果 auth 失败,如何显示 toast jetpack compose firebase if else @Composable 调用只能在 @Composable 函数的上下文中发生

在事件中使用 Context/Toast 时不需要的重组 - Jetpack Compose

为什么项目捕获对象给我在 Compose 中找不到参考

Jetpack compose 为网络检索视频帧导致延迟

使用默认使用 RTL 语言的项目本地化 android 应用程序

获取模板向导配方类 Intellij 中的应用程序包名称

喷气背包组成影子奇怪的行为

CenterAlignedTopAppBar 滚动行为:未为参数状态传递值

我可以在不解密的情况下使用 JSch 获取加密的 SSH 私钥的类型或 fingerprint 吗?