小编Fil*_*ski的帖子

Android ImageView.setMatrix()和.invalidate() - 重新绘制需要花费太多时间

任务:我想调整大小并在屏幕上移动图像.无论图像有多大,我都想顺利地做到这一点.API级别8应该支持该代码.

问题:我试过ImageViewscaleType="matrix".打电话ImageView.setMatrix()然后ImageView.invalidate()用小图片很好用,但对大图片很可怕.无论多大ImageView.

我可以以某种方式加快重新绘制,ImageView以便不会重新计算整个图像吗?也许有一种方法可以使用不同的组件完成任务?


编辑:有关我想要实现的更多信息.

  • pw,ph - 图片的宽度和高度(以像素为单位)
  • dw,dh - 设备显示的宽度和高度(以像素为单位)
  • fw,fh - 可见帧的宽度和高度(以像素为单位)
  • x,y - 框架左上角的位置(以像素为单位) 可视化问题.

我想在屏幕上显示图像的一部分.属性x,y,fwfh不断变化.我正在寻找代码的一部分(想法),或者为这8个指定变量快速生成并显示图像部分的组件.


编辑2:关于pwph的信息

我假设pwph可以保持从1到无穷大的值.如果这种方法造成很多麻烦,我们可以假设图片不比用设备的相机拍摄的图片大.

java android invalidation imageview scaletype

15
推荐指数
1
解决办法
982
查看次数

如何在QML中编辑QQml​​ListProperty

如果我们想在QML中使用自定义C++对象列表,我们可以使用 QQmlListProperty

在QML中注册时,我们需要指定一个QML将读取列表的函数.

文档指出,对于完整功能列表,我们需要使用此功能:

QQmlListProperty::QQmlListProperty(QObject *object, void *data, AppendFunction append,
                                   CountFunction count, AtFunction at, ClearFunction clear)
Run Code Online (Sandbox Code Playgroud)

以下是如何在C++中编写它的示例:

classwithlist.h

#ifndef CLASSWITHLIST_H
#define CLASSWITHLIST_H

#include <QObject>
#include <QQmlListProperty>
#include "element.h"

class Element;

class ClassWithList : public QObject
{
    Q_OBJECT
    Q_PROPERTY(QQmlListProperty<Element> elements  READ getElements  NOTIFY elementsChanged)


public:
    explicit ClassWithList(QObject *parent = 0);

    QQmlListProperty<Element> getElements();
    void appendElements(QQmlListProperty<Element> *list, Element *e);
    static int elementsCount(QQmlListProperty<Element> *list);
    static Element* elementsAt(QQmlListProperty<Element> *list, int i);
    static void elementsClear(QQmlListProperty<Element> *list);

signals:
    void elementsChanged(QQmlListProperty<Element>);

private:
    QList<Element *> m_elements;

};

#endif // …
Run Code Online (Sandbox Code Playgroud)

c++ qt qobject qml

3
推荐指数
1
解决办法
2920
查看次数

标签 统计

android ×1

c++ ×1

imageview ×1

invalidation ×1

java ×1

qml ×1

qobject ×1

qt ×1

scaletype ×1