2011年12月26日月曜日

( Qt C++ )QPainterを使った画像の描画


あぁ寒い寒い。身も心も財布も寒いわぁ。宝くじでも当たんないかなぁ...一つも買ってないけど。

はい、それではQPainterを使った画像の描画をやっていきます。
サンプルは独自のものを使います。
そして、いつものようにQtCreaterなどでMainWindowなどのGUI部品を定義済みであるとします。(QtCreaterなどの使い方は ”Qtをはじめよう" を見てください。)
ではコードを


(mainwindow.h)
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT//マクロ
   
public:
    explicit MainWindow(QWidget *parent = 0);//コンストラクタ
    ~MainWindow();//デストラクタ

protected:
    void paintEvent(QPaintEvent *);//←ここ重要!ペイントイベント
  
private:
    Ui::MainWindow *ui;//uiにはGUI部品が記述
}; 

(mainwindow.cpp)
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)//uiにはGUI部品に関する記述
{
    ui->setupUi(this);//uiのGUI部品の初期化
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::paintEvent(QPaintEvent *)//←重要!ペイントイベント
{
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true);
    painter.drawImage(50, 50, QImage("//home//ubuntu001//ShadesOfBlue.jpg"));
}

超簡単ですね。理解に重要なのはpaintEventだけですので他は無視してしまっても構いません。まずQPainterをthis(この場合MainWindow)で作成し、アンチエイリアスを設定します。
その後drawImageで画像を描いています。今回は(50,50)の位置に指定した画像を描いています。drawImageには様々な種類がありますので目的に合ったものを選んでください。
リファレンス

実行すると以下のようになります。
以上です。