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 |
---|