2009-08-31 53 views

回答

2

由於帕維爾說,QtSvg是我相信的方式。這很容易使用,但在我們的團隊中,我們遇到了與QtSvg相關的性能問題,特別是在Linux上。所以我們決定直接解析SVG文件XML並使用Qt本身進行渲染。事實證明這要快得多。

僞代碼: -

// Read the SVG file using XML parser (SAX) 
void SvgReader::readFile() 
{ 
    QFile file(<some svg filename>); 
    if (!file.open(QFile::ReadOnly | QFile::Text)) { 
    qWarning("Cannot open file"); 
    return; 
    } 
    QString localName; 
    QXmlStreamAttributes attributes; 
    pXml = new QXmlStreamReader(&file); 
    pXml->setNamespaceProcessing(false); 
    while (!pXml->atEnd()) { 
    switch (pXml->readNext()) { 
     case QXmlStreamReader::StartElement: 
      localName = pXml->name().toString(); 
      if (localName.compare(<some element path>) == 0) { 
      attributes = pXml->attributes(); 
      QStringRef data = attributes.value(<some attribute name>); 
      // parse/use your data; 
      } 
     // similarly other case statements 
    } 
    } 
} 
1

QtSvg模塊可能會有幫助。