Qt 4.7を使用しています。 (フォントサイズの変更に変化) イメージでテキストを塗りつぶす方法。スケール&センター(垂直と水平)?
- フィルテキスト(文字、eg'A ')と、その画像がテキストのサイズに縮小することにしたい:私はにしたいです画像をそのテキストの中心から垂直方向および水平方向にセンタリングする必要があります。
これは、1つの文字のために達成されたとき、私は範囲内の多くの文字のために同じことをやりたい(のような「A」 - 「H」)、または文字列の文字がで入力ランタイム。このため
現在、私はこの手法を採用しています:
[ bgTextImage.h ]
QTextCursor cursor;
QTextCharFormat format;
QString imageFileName
[ bgTextImage.cpp ]
cursor = ui->textEdit->textCursor();
QPixmap pic(imageFileName);
QFontMetrics fontMetrics(format.font());
QSize fMSize = fontMetrics.size(0, "A", 0, 0);
QPixmap newPixmap = pic.scaled(fMSize, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation);
if(newPixmap.width() > fMSize.width())
{
int x = (newPixmap.width() - fMSize.width())/2;
newPixmap = newPixmap.copy(x, newPixmap.rect().y(), fMSize.width(), fMSize.height());
}
if(newPixmap.height() > fMSize.height())
{
int y = (newPixmap.height() - fMSize.height())/2;
newPixmap = newPixmap.copy(newPixmap.rect().x(), y, fMSize.width(), fMSize.height());
}
format.setForeground(QBrush(newPixmap));
format.setTextOutline(QPen(borderColor, ui->spinBoxWidth->value()));
ui->textEdit->clear();
cursor.insertText(text, format);
それはCSSや他の技術と整合しなければならないときのように、私は、結果を取得していますが、画像が正しくセンタリングされていません。 これは、この仕事を終わらせるための非常にアマチュアなアプローチであると感じています。したがって、もしあれば、より良い、またはベストプラクティスを探しています。そうでなければ、少なくとも現在のプロセスを改善する方法があれば教えてください。
答えLeviXありがとうございます。これは有望そうだ。私はそれについて知っていましたが、これまでに使ったことはありません。私はそれを試し、結果を共有します。 – zeFree