2016-04-19 3 views
1

画像とドロップキャップで始まるテキストでPNGをレンダリングします。 AFAIK、QTextDocument::drawContentsでリッチテキストをレンダリングできますが、通常のサイズのテキストに囲まれたドロップキャップを追加するにはどうすればよいですか?私は任意のレンダリングしようとしていないQtリッチテキストのキャップを外す

enter image description here

enter image description here

+0

私は[この](https://github.com/ftena/qt-snippets/tree/master/richtext)が正確ではないと思いますあなたが望むものが、おそらくそれは助けになるかもしれません。 – Tarod

+0

@Tarodありがとう、それは良い出発点だった – Winand

答えて

1

下の画像の上部がQTextBrowserQPixmapQLabel上に配置された透明にレンダリングされる低いものですまだ私の質問が述べたように追加の写真が、それは難しいはずはありません。

textDocument = QtGui.QTextDocument(self) 
    #self.t.setDocument(textDocument) 
    textDocument.setDefaultFont(QtGui.QFont("Times New Roman", 12)) 
    textDocument.setDefaultStyleSheet(".firstcharacter {" 
            "float: left;" 
            "color: #903;" 
            "font-size: 72px;" 
            "font-family: Monotype Corsiva;" 
            "margin-top: -16px;" 
            "margin-bottom: -16px;" 
            "margin-right: 4px;" 
            "}") 
    textDocument.setHtml('<p>' 
        '<table class="firstcharacter"><tr><td>L</td></tr></table>' 
        'ipsum dolor sit amet, consectetur adipiscing elit. Mauris ' 
        'tristique lobortis orci ac lacinia. Fusce eu purus eget ' 
        'diam vehicula auctor nec eu elit. Morbi consequat facilisis ' 
        'orci vel malesuada. Donec ultrices molestie sollicitudin. ' 
        'Aliquam pharetra libero enim. Donec et suscipit massa. ' 
        'Donec dui odio, dignissim non sodales et, tincidunt a sapien. ' 
        'Phasellus elit nibh, adipiscing sed blandit vel, interdum et arcu.' 
        '</p>') 
    textDocument.setTextWidth(400) 
    img = QtGui.QImage(textDocument.size().toSize(), 
         QtGui.QImage.Format_ARGB32_Premultiplied) 
    img.fill(QtCore.Qt.transparent) 
    #img.fill(0xffffffff) 
    p = QtGui.QPainter(img) 
    p.translate(0, 0) #makes drop cap smoother 
    textDocument.drawContents(p) 
    p.end() 
    self.pic.setPixmap(QtGui.QPixmap.fromImage(img)) 
    img.save(r"d:\testimg.png") 

参考文献:

+0

本当に素晴らしい!おめでとうございます:あなたの許可を得て、GitHubで '' float:left; "'を正しく使用するようにコードを更新します。ハッピーコーディング! – Tarod

+0

@Tarod update it。) – Winand

関連する問題