【Qt QML入门】Image

2023-12-13 23:40:46

Image类型显示一个图像。
使用source属性将图像的源指定为URL。图像可以以Qt支持的任何标准图像格式提供,包括位图格式,如PNG和JPEG,以及矢量图形格式,如SVG。
如果没有指定宽度和高度属性,图像将自动使用加载图像的大小。

import QtQuick
import QtQuick.Window
import QtQml

Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")
    Image {
        source: "qrc:/img.png"
        fillMode: Image.PreserveAspectFit
        anchors.fill: parent
    }
}

加载文件的过程默认是同步的,也就是会阻塞UI,直到图片加载完成。

如果想加载比较大的图片,可以启用异步属性,在线程中加载该图像。如果图片是从网络资源获得的,则会自动异步加载,并根据需要更新进度和状态属性。

还有一点需要注意,Image被加载成功后,会在内部被缓存和共享,因此如果几个Image项有相同的源,则只会加载图像的一个副本。

Image的属性:

currentFrame:当前可见的帧。默认值为0。如果图像包含多个帧,则可以将其设置为0

frameCount - 1之间的数字,以显示不同的帧。

frameCount:图像中的帧数。大多数图像只有一帧

horizontalAlignment : enumeration

verticalAlignment : enumeration

设置图像的水平和垂直对齐方式。默认情况下,图像是居中对齐的。

水平对齐的有效值为Image.AlignLeft,Image.AlignRight和Image.AlignHCenter。

垂直对齐的有效值为Image.AlignTop,Image.AlignBottom和Image.AlignVCenter。

paintedHeight : real

paintedWidth : real

保存了实际绘制的图像的大小。在大多数情况下,它与宽度和高度相同,但当使用Image.PreserveAspectFit or an Image.PreserveAspectCrop,paintedWidth或paintedHeight可以小于或大于图像项的宽度和高度。

asynchronous : bool

指定本地文件系统上的映像应该在单独的线程中异步加载。默认值为false,在加载图像时导致用户界面线程阻塞。在维护响应式用户界面比立即显示图像更可取的情况下,将异步设置为true非常有用。
注意,此属性仅对从本地文件系统读取的映像有效。通过网络资源(例如HTTP)加载的图像总是异步加载的。

cache : bool

指定是否应该缓存图像。默认值为true。在处理大图像时,将缓存设置为false很有用,以确保它们不会以牺牲小的“ui元素”图像为代价被缓存。

fillMode : enumeration

Image.Stretch-图像被缩放到适合
Image.PreserveAspectFit -图像被均匀缩放以适合而不裁剪
Image.PreserveAspectCrop -图像被均匀缩放以填充,必要时进行裁剪
Image.Tile-图像是水平和垂直复制
Image.TileVertically-图像水平拉伸和垂直平铺
Image.TileHorizontally-图像垂直拉伸,水平平铺
Image.Pad -图像不被转换

mipmap : bool

此属性保留图像在缩放或转换时是否使用mipmap过滤。
与平滑相比,当按比例缩小时,Mipmap过滤提供了更好的视觉质量,但它可能会以性能为代价(在初始化图像和渲染期间)。
默认情况下,此属性设置为false。

mirror : bool

此属性保留图像是否应该水平反转(有效地显示镜像)。
默认值为false。

progress : real

这个属性保存图片加载的进度,从0.0(没有加载)到1.0(完成)。

smooth : bool

此属性用于确定图像在缩放或转换时是否平滑过滤。平滑过滤提供更好的视觉质量,但在某些硬件上可能会变慢。如果图像以其自然大小显示,则此属性没有视觉或性能效果。
默认情况下,此属性设置为true。

source : url

Image可以处理Qt支持的任何图像格式,从Qt支持的任何URL方案加载。
URL可以是绝对的,也可以是相对于组件的URL的。

sourceClipRect : rect

如果设置了此属性,则保存要加载的源图像的矩形区域。
当只需要加载图像的一部分时,sourceClipRect与sourceSize属性一起工作以节省系统资源。

sourceSize : size

此属性保存全帧图像的缩放宽度和高度。
与缩放图像绘制的宽度和高度属性不同,此属性为加载的图像设置存储的最大像素数,以便大型图像不会使用不必要的内存。

如果图像的实际大小大于sourceSize,则图像按比例缩小。如果只将尺寸的一个维度设置为大于0,则按比例设置另一个维度以保持源图像的长宽比。(fillMode与此无关。)
如果两个sourceSize。宽度和sourceSize。高度设置时,图像将按比例缩小以适应指定的大小(除非使用了PreserveAspectCrop或PreserveAspectFit,否则它将按比例缩小以匹配裁剪/拟合的最佳大小),保持图像的宽高比。缩放后图像的实际大小可通过Item::implicitWidth和Item::implicitHeight获得。
如果源是一个本质上可伸缩的图像(例如;SVG),此属性决定所加载图像的大小,而不考虑其固有大小。避免动态更改此属性;呈现SVG比呈现图像要慢。
如果源是一个不可伸缩的图像(例如。JPEG),则加载的图像将不大于此属性指定的大小。对于某些格式(目前只有JPEG),整个图像实际上永远不会加载到内存中。
如果还设置了sourceClipRect属性,则sourceSize确定比例,但它将被剪切为剪辑矩形的大小。
通过将sourceSize设置为undefined,可以将sourceSize清除为图像的自然大小。

注意:动态更改此属性会导致图像源被重新加载。

status : enumeration

这个属性保存图像加载的状态。它可以是:

Image.Null-没有设置图像

Image.Ready-图像已加载

Image.Loading-图像当前正在加载

Image.Error-加载图像时发生错误

使用此状态以某种方式提供更新或响应状态更改。

文章来源:https://blog.csdn.net/wangyi463295828/article/details/134980592
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。