android - Android 上的 QML Canvas ,方向问题

标签 android canvas orientation qml qt-quick

我对 QML(在 Android 上)还很陌生,所以如果这是一件微不足道的事情,请原谅我。我正在尝试使用 Canvas 对象绘制一些自定义图形等。但是我无法让它在改变屏幕方向时表现良好。如果我以纵向启动我的应用程序,它看起来没问题,直到我切换到横向。如果我横向启动它,也会发生同样的情况。一切都很好,直到我去肖像。我该如何解决这个问题?这是一个我遇到问题的简单测试:

import QtQuick 2.2
import QtQuick.Window 2.1

Window {
    visible: true
    visibility: Window.FullScreen

    Rectangle {
        anchors.fill: parent
        color: "red"

        Canvas {
            anchors.fill: parent

            onPaint: {
                var ctx = getContext("2d")

                ctx.fillStyle = "blue"
                ctx.fillRect(0, 0, width, height)

            }
        }
    }
}

事情是这样的。如果我启动上面的应用程序肖像,它会用红色背景矩形和顶部的蓝色 Canvas 填充屏幕(我实际上可以看到它绘制了两者)。当我去风景时,这就是我最终得到的。

Portrait to landscape

Canvas 不再填满整个屏幕。它现在似乎是一个完美的正方形并剪掉了右侧(它没有拉伸(stretch)。如果有更多内容你会看到这个)。如果我开始横向并纵向,则会发生类似的事情:

enter image description here

最佳答案

作为可能的解决方案之一回答我自己的问题。看起来我原始代码中的“anchors.fill: parent”行默认情况下不会更新相应级别的宽度和高度属性。下面的代码似乎解决了这个问题:

import QtQuick 2.2
import QtQuick.Window 2.1

Window {
    id: root
    width: Screen.width
    height: Screen.height
    visible: true
    visibility: Window.FullScreen


    Rectangle {
        anchors.fill: parent
        width: parent.width
        height: parent.height
        color: "red"

        Canvas {
            anchors.fill: parent
            width: parent.width
            height: parent.height

            onPaint: {
                var ctx = getContext("2d")

                ctx.fillStyle = "blue"
                ctx.fillRect(0, 0, width, height)

            }
        }
    }
}

关于android - Android 上的 QML Canvas ,方向问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25829648/

相关文章:

android - 聚焦 ListView 的底部? flutter

javascript - 在现有 Canvas 内的多边形中添加 HTMLImageElement

javascript - 如何以 Angular 2在 Canvas 上显示图像?

iphone - xcode - 如何将 View 锁定为纵向模式,但仍允许一个 View 旋转?

iphone - IOS 7 + 对于力 Controller 方向为纵向

iOS 应用程序 AdColony 框架错误的视频方向

java - 如何使用 Android SIP API 向 SIP 服务器注册 SIP 配置文件?

向 Gcm 发送 1000 多个用户的 Php 函数

android - 如何在 Exoplayer 的 HLS Streaming URL 中打开/关闭隐藏式字幕?

wpf - 如何了解 Canvas.Children 中对象的类型