メモリーデバイスを利用したイメージの作成と表示メモリーデバイスの作成と表示メモリデバイスを利用するとイメージ画像の直接操作を行うことができます。![]() ![]() ![]() [段々と浮かび上がって来るイメージ画像の表示] このサンプルの処理の概要は次の通りです。
#include <WScom.h>
#include <WSCfunctionList.h>
#include <WSCbase.h>
//----------------------------------------------------------
//Function for the event procedure
//----------------------------------------------------------
#include <WSDappDev.h>
#include <WSCcolorSet.h>
#include <WSCimageSet.h>
#include <WSCmainWindow.h>
extern WSCmainWindow* newwin000;
#include <WSDmwindowDev.h>
WSDmwindowDev* mdev = NULL;
WSDmwindowDev* mdev2 = NULL;
void btnep(WSCbase* object){
WSDdev* dev = newwin000->getdev(); //A
if (mdev == NULL){ //B
mdev = WSDmwindowDev::getNewInstance();
mdev2 = WSDmwindowDev::getNewInstance();
}
mdev->createPixmap(200,200); //C
mdev->beginDraw(0,0,200,200); //D
WSDimage* image = WSGIappImageSet()->getImage("001.jpg"); //E
mdev->drawStretchedImage(0,0,200,200,image); //F
mdev->endDraw(); //G
mdev2->createPixmap(200,200); //H
mdev->initBuffer(); //I
mdev2->initBuffer(); //J
long i,x,y;
for(i=0;i<100; i++){
for(x=0; x<200; x++){
for(y=0; y<200; y++){
WSCuchar r,g,b;
mdev->getBufferRGB(x,y,&r,&g,&b); //K
r = (WSCushort)((double)(r*i)/100); //L
g = (WSCushort)((double)(g*i)/100); //L
b = (WSCushort)((double)(b*i)/100); //L
mdev2->setBufferRGB(x,y,r,g,b); //M
}
}
mdev2->putBufferToPixmap(); //N
mdev2->copyToWindow(dev,0,0,200,200,0,0); //P
}
}
static WSCfunctionRegister op("btnep",(void*)btnep);
A で描画先のウィンドウのデバイスを取得します。
B では、最初にボタンがおされた場合に、メモリデバイスを作成します。
メモリデバイスは、new 演算子での作成は出来ません。
メモリデバイスは、
ウィンドウシステム異存ですので、
getNewInstance メソッドがウィンドウシステムに適合したインスタンスを
作成します。
次は,メモリデバイス1へのイメージ画層 001.jpg の描画です。 メモリデバイスへ描画を行う前に、C のように createPixmap メソッドで メモリデバイスの大きさを指定して初期化を行います。 次にメモリデバイスへ描画です。描画を行う場合は, まず、D のように beginDraw() メソッドを呼び出します。 E で、イメージ管理グローバルインスタンスからイメージを取得します。 F では、取得したイメージを表示しています。 描画がおわったら、endDraw() メソッド呼び出します。 H でメモリデバイス2も初期化しておきます。 I,J で直接操作のためのバッファを初期化します。 このとき、内部のイメージのデータがバッファに転送されます。 K で、メモリデバイス1のRGB値を取得します。 L で、取得したRGB値の輝度を調節し、 M で、メモリデバイス2にセットします。 N では、バッファに設定された内容を内部のイメージに転送しなおし, 反映します. P で、反映したイメージデータをウィンドウに転送し、表示しています。 100段階の輝度計算のループを行い、輝度をあげながら100回、 イメージを表示します。 Document Release 3.00 For Use with Wide Studio Release 3.00, Summper 2002
|