不過我來寫一個Qt的方式
觀念是一樣的
先將字畫出來,在擷取下來,轉成點陣圖
所以我的作法是
將字畫在QLabel上(注意,要將反鋸齒關掉)
在擷取成QPixmap
最後在轉成bitmap
void Widget::rasters()
{
if(ui->lineEdit->text().isEmpty()){
ui->textEdit->setText(ui->lineEdit->text());
return;
}
QLabel label(ui->lineEdit->text());
QFont font(ui->fontComboBox->currentText());
font.setStyleStrategy(QFont::NoAntialias);
font.setPixelSize(ui->comboBox->currentText().toInt());
label.setFont(font);
label.adjustSize();
QPixmap pixmap = QPixmap::grabWidget(&label);
QImage image = pixmap.toImage();
QString text;
for(int i=0; i<pixmap.height(); i++){
for(int j=0; j<pixmap.width(); j++){
QRgb rgb = image.pixel(j,i);
if(128 > qGray(rgb)){
text.append(QString::fromUtf8("■"));
}else{
text.append(QString::fromUtf8("□"));
}
}
text.append("\n");
}
ui->textEdit->setText(text);
}
沒有留言:
張貼留言