mapx 創建使用位圖樣式的符號例程。

/*
MapInfo Products Knowledge Base
Product: MapX
Version: 3.x
Platform: All Win32 Platforms
Category: C++
Summary:
C++ sample code showing how to create a point and use the BitmapSymbols collection.
Question:
Is there any C++ sample code showing how to use the BitmapSymbols collection?
Answer:
This code, in the OnToolUsed event, will create a symbol feature in a layer called "Temp" using a bitmap symbol.
*/


if (ToolNum == MYTOOL_SYMBOL) 
{
try 
{
//create a new mapx point
CMapXPoint pt;
pt.CreateDispatch(pt.GetClsid());
//set the point's location to the mouse down coords
pt.Set(X1, Y1);

//create a new variant to pass to the AddFeature method
VARIANT p;
p.vt 
= VT_DISPATCH;
//set up the variant to refer to the point
p.pdispVal = pt.m_lpDispatch;

//create a new bitmapsymbols collection
CMapXBitmapSymbols bmps;
bmps.CreateDispatch(bmps.GetClsid());

//create a new style object like the MapX default
CMapXStyle sty = m_ctrlMapX.GetDefaultStyle().Clone();

//tell the style object a bitmap symbol is going to be used
sty.SetSymbolType(miSymbolTypeBitmap);

//set the new style's properties to a 24 point bitmap symbol
// I am arbitrarily choosing the fourth in the collection
sty.SetSymbolBitmapName(bmps.Item(3).GetName());
sty.SetSymbolBitmapSize(
24);

//create a new variant to pass to the AddFeature method
VARIANT s;
s.vt 
= VT_DISPATCH;
//set up the variant to refer to our style object
s.pdispVal = sty.m_lpDispatch;

//finally, call the AddFeature method and pass it the variant
// parameters
CMapXFeature ftr = m_ctrlMapX.GetLayers().Item("Temp").AddFeature(m_ctrlMapX.GetFeatureFactory().CreateSymbol(p, s));
}

catch (COleDispatchException *e) 
{
e
->ReportError();
e
->Delete();
}

catch (COleException *e) 
{
e
->ReportError();
e
->Delete();
}

}


//Last Modified: 1999-04-09 14:52:47
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章