当前位置: 首页 > article >正文

Qt QML解决SVG图片显示模糊的问题

前言

在QML中直接使用SVG图片,使用Image控件加载资源,显示出来图片是模糊的,很影响使用体验。本文介绍重新绘制SVG图片,然后注册到QML中使用。

效果图:
在这里插入图片描述
左边是直接使用Image加载资源显示的效果
右边是重绘后的效果

正文

为了能在QML中注册使用,将继承于QQuickPaintedItem进行重绘。
关键代码

#include "svgimage.h"
#include <QPointF>

SvgImage::SvgImage(QQuickItem *parent) : QQuickPaintedItem(parent)
{
    m_pSvgRenderer = new QSvgRenderer(this);
}

void SvgImage::declareQML()
{
    qmlRegisterType<SvgImage>("SvgImage", 1, 0, "SvgImage");
}

void SvgImage::writeSource(QString sourcePath) {
    if(sourcePath.isEmpty()){
        return;
    }
    m_source = sourcePath;
    m_source.replace("qrc", "");
    m_pSvgRenderer->load(m_source);
    emit sourceChanged();
    update();
}

void SvgImage::paint(QPainter *painter)
{
    QRectF rect = QRectF(QPointF(0,0), QSizeF(width(), height()));
    m_pSvgRenderer->render(painter, rect);
}

本文demo提供了在QML中使用的完整流程.

Demo 下载


http://www.kler.cn/a/590500.html

相关文章:

  • @RequestBody注解解释
  • 服务创造未来 东隆科技携多款产品亮相慕尼黑
  • 【网络协议】基于UDP的可靠协议:KCP
  • Git 使用指南
  • 【多线程】单例模式
  • Unity学习之Shader总结(一)
  • Docker入门篇2:查看容器、运行容器、启动和停止容器、删除容器
  • Android PC 要来了?Android 16 Beta3 出现 Enable desktop experience features 选项
  • 【STM32】NVIC(嵌套向量中断控制器)
  • Android之RecyclerView列表拖动排序
  • Vue3项目白屏问题深度解析:从AI辅助诊断到性能优化实战
  • 《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(49)万鸦壶焚网络 - 网络延迟时间(Bellman-Ford)
  • Spring boot+mybatis的批量删除
  • 【AI】深度学习与人工智能应用案例详解
  • LIMS系统在纸制品制造的应用 内检实验室LIMS系统提升纸制品质控
  • Postman发送GET请求示例及注意事项
  • Vue.js 事件处理与修饰符详解
  • 2. qt写带有槽的登录界面(c++)
  • 玩转python:通俗易懂掌握高级数据结构-collections模块之UserDict
  • 人工智能之数学基础:从线性变换理解矩阵范数和矩阵行列式