发表用户:讨论贴
收集整理:James.Liu
相关讨论:http://www.mygis.com.cn/forum/dispbbs.asp?boardID=4&ID=3055
信息原始来源:James MapInfo技术论坛

文章标题:我想在指定的点上显示一个位图,怎么实现?

milidong

大家帮忙,我想在指定的点上显示一个位图,怎么实现?

能帮忙解决吗,谢谢!给一个新代码更好!

wxqzhy

用下面的代码试试,应该没问题
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();
}

milidong

请问显示自己的位图怎么办?wxqzhy ,非常感谢你呦

wxqzhy

把你的位图放到CUSTSYMB目录下,调用方法和上面的一样,我想应该是没问题