Qt:读写SVG

来源:互联网 发布:服装批发开单软件 编辑:程序博客网 时间:2024/06/11 16:33
Qt:读写SVG

//绘制SVG图形:

SvgView::SvgView(const QString &file, QWidget *parent)    : QWidget(parent){    doc = new QSvgRenderer(file, this);  //QSvgRenderer将SVG图形绘制到绘图设备上    connect(doc, SIGNAL(repaintNeeded()),  //文档需要更新时发出,通常用来实现动画效果            this, SLOT(update()));}void SvgView::paintEvent(QPaintEvent *){    QPainter p(this);    p.setViewport(0, 0, width(), height());    doc->render(&p);}QSize SvgView::sizeHint() const{    if (doc)        return doc->defaultSize();    return QWidget::sizeHint();}void SvgView::wheelEvent(QWheelEvent *e){    const double diff = 0.1;    QSize size = doc->defaultSize();    int width  = size.width();    int height = size.height();    if (e->delta() > 0) {      //此函数已废弃,用pixelDelta() / angleDelta() instead.        width = int(this->width()+this->width()*diff);        height = int(this->height()+this->height()*diff);    } else {        width  = int(this->width()-this->width()*diff);        height = int(this->height()-this->height()*diff);    }    resize(width, height);}//    void MyWidget::wheelEvent(QWheelEvent *event)//    {//        QPoint numPixels = event->pixelDelta();//        QPoint numDegrees = event->angleDelta() / 8;//        if (!numPixels.isNull()) {//            scrollWithPixels(numPixels);//        } else if (!numDegrees.isNull()) {//            QPoint numSteps = numDegrees / 15;//            scrollWithDegrees(numSteps);//        }//        event->accept();//    }

//生成SVG图形:

#include <QApplication>#include <QtGui>#include <QtSvg>int main(int argc, char *argv[]){    QApplication app(argc, argv);QSvgGenerator svgGen;svgGen.setFileName("test.svg");QRectF rectangle(10.0, 20.0, 80.0, 60.0);QPainter painter;painter.begin(&svgGen);QPen pen(Qt::red);painter.setPen(pen);painter.drawEllipse(rectangle);rectangle.moveRight(100);painter.drawRect(rectangle);rectangle.moveRight(100); QRectF source(0.0, 0.0, 70.0, 40.0); QImage image("Greenstone.bmp");painter.drawImage(rectangle, image, source); painter.end();return 0;}


0 0
原创粉丝点击