[英]QImage display sharp pixels
我有一個要使用QImage繪制的布爾值矩陣。 我已經從帶有0和255值的uchar向量分別導入了圖像,分別為false和true。 我希望黑白方塊代表不同的值,但是相反,我在像素之間出現了模糊,如此處的圖片所示。 您能否讓我知道如何消除模糊並顯示更大的像素?
代碼如下:
for(int i=0; i<world.size(); ++i) {
if(world[i] == true)
world_uchar[i] = 255;
else
world_uchar[i] = 0;
}
QImage img(world_uchar, cols, rows, QImage::Format_Indexed8);
QLabel myLabel;
myLabel.setPixmap(QPixmap::fromImage(img));
myLabel.setScaledContents(true);
myLabel.show();
每次窗口大小更改時或在圖像更改時,我都沒有使用setScaledContents
繪制調整大小的圖像。 請參見下面的示例(在該示例中,我使用了QMainWindow
):
class MainWindow : public QMainWindow
{
Q_OBJECT
...
private:
QPixmap pixmap;
};
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->label->setAlignment(Qt::AlignCenter);
//SetMinminumSize to ensure that the QLabel
//can be resized
ui->label->setMinimumSize(10, 10);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QBitArray world(256, false);
uchar *world_uchar = new uchar[world.size()];
int cols, rows;
cols = rows = (int)qSqrt(world.size());
for (int i = 0; i < world.size(); i += 2)
world.setBit(i, (qrand() % ((1 + 1) - 0) + 0));
for (int i = 0; i < world.size(); i++)
{
if (world[i])
world_uchar[i] = 255;
else
world_uchar[i] = 0;
}
QImage img(world_uchar, cols, rows, QImage::Format_Indexed8);
pixmap = QPixmap::fromImage(img);
OnResize();
}
void MainWindow::resizeEvent(QResizeEvent *)
{
OnResize();
}
void MainWindow::OnResize()
{
if (!pixmap.isNull())
ui->label->setPixmap(pixmap.scaled(ui->label->size(), Qt::KeepAspectRatio, Qt::FastTransformation));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.