Programing/MapWindow GIS

[MapwinGis] 이미지 로드 및 투명 처리 (C++)

Ezzi 2013. 4. 3. 15:22
반응형

MapwinGis를 사용해보신 분들은 아시겠지만 예제파일들이 C#으로만 존재 합니다. 


한글로 된 자료도 부족한것 같고 말이죠. 


그래서 틈나는 대로 c++로 사용해본 경험을 적어나갈까 하는데 그게 쉽지 않네요.





MapwinGis 는 광범위한 포멧의 파일을 지원합니다. 


그중에서도 우리가 사용하는 다양한 이미지들이 사용가능합니다. 


다음은 MapwinGis에 Define 되어 있는 이미지 포멧들 입니다. 


BITMAP_FILE = 0,

GIF_FILE = 1,

USE_FILE_EXTENSION = 2,

TIFF_FILE = 3,

JPEG_FILE = 4,

PNG_FILE = 5,

PPM_FILE = 7,

ECW_FILE = 8,

JPEG2000_FILE = 9,

SID_FILE = 10,

PNM_FILE = 11,

PGM_FILE = 12,

BIL_FILE = 13,

ADF_FILE = 14,

GRD_FILE = 15,

IMG_FILE = 16,

ASC_FILE = 17,

BT_FILE = 18,

MAP_FILE = 19,

LF2_FILE = 20,

KAP_FILE = 21,

DEM_FILE = 22



<이미지 로드 >


static int iHandle = -1;        // 이미지의 인덱스를 관리하는 변수

CString fileName = "";        // 파일의 위치를 저장할 변수

fileName = "파일의 경로";

BSTR bstrL = fileName.AllocSysString();


IImagePtr iimage = NULL;   // 이미지 포인터 변수 생성

iimage.CreateInstance( __uuidof(Image) );   


VARIANT_BOOL ret_val;

iimage->Open( bstrL, ImageType::USE_FILE_EXTENSION, false, NULL, &ret_val );


// AddLayer 만 하셔도 이미지는 올라 갑니다.

iHandle = m_cvMap.AddLayer( iimage, true );    // 이미지의 인덱스가 리턴됨


iimage->put_dX( 10.0 );

iimage->put_dY( 10.0 );


double cx = 0, cy = 0; // Image : Center Pos

long iw = 0, ih = 0; // Image : Width, Height

iimage->get_Width(&iw);

iimage->get_Height(&ih);


cx = (10.0 * iw) * 0.5;

cy = (10.0 * ih) * 0.5;


iimage->put_XllCenter(  _xx - cx );

iimage->put_YllCenter( _yy - cy );


// 이미지의 사이즈 조정 및

// 이미지의 정 가운데를 기준으로 이미지를 로드 한 작업입니다. 

ex. (100, 100) 이라는 좌표에 이미지를 올린다고 가정할때 이미지의 좌측상단이 기준이 되어 올라갑니다. 


<Transparency>


MapwinGis 는 특정색을 투명처리 할 수 있는 다음과 같은 함수를 제공합니다. 

put_TransparencyColor( OLE_COLOR * retval )

put_TransparencyColor2( OLE_COLOR * retval )


OLE_COLOR bgColor(RGB(250, 250, 250));

iimage->put_TransparencyColor(bgColor);

iimage->put_UseTransparencyColor( VARIANT_TRUE );    // True: On False: Off


또한 전체 이미지 투명도를 Percent로 조절할 수 있습니다. 

double dp = 0.7;           // TransParency Percent 0.0 ~ 1.0

iimage->put_TransparencyPercent( dp );

반응형

'Programing > MapWindow GIS' 카테고리의 다른 글

1 - MapwindowGIS - CADRG Viewer  (0) 2012.05.30