阅读:1600回复:0
再问~关于MO自定义符号ICustomMarker(VC+MO)
<P>目的是要实现用BMP位图作为打点显示的符号,翻遍了论坛的相关帖子,回答都不是很清晰.方法1:用字体软件做TRUETYPE字库,如fontcreator等(感觉不太好用,哪位高手用得比较熟练的教教小弟了~^^~);方法2:ICustomMarker,关于这个方法看了很多帖子,esri也有现成的VB和C#的例子,VC的ICustomMarker例子是自己画同心的矩形;</P>
<P> 小弟想用VC+MO实现上述功能,由于VC水平欠缺,不会转换,主要的DRAW函数不会写,肯请高手不吝赐教,代码如下:</P> <P> STDMETHOD(SetupDC)(LONG hDC, DOUBLE dpi, IDispatch * pBaseSym)<BR> {</P> <P> // get the instance<BR> HINSTANCE pHinstance = _Module.GetResourceInstance();</P> <P> if (m_hBMP)<BR> {<BR> ::DeleteObject(m_hBMP);<BR> m_hBMP = 0;<BR> }<BR> m_hBMP = ::LoadBitmap(pHinstance, MAKEINTRESOURCE(IDB_CARTOON));<BR> m_hBrush = ::CreatePatternBrush(m_hBMP);<BR> m_hOldBrush = (HBRUSH)::SelectObject((HDC)hDC, m_hBrush);<BR> <BR> return S_OK;<BR> }</P> <P> STDMETHOD(ResetDC)(LONG hDC)<BR> {</P> <P> if (m_hOldBrush)<BR> ::SelectObject((HDC)hDC, m_hOldBrush);</P> <P> if (m_hBrush)<BR> {<BR> ::DeleteObject(m_hBrush);<BR> m_hBrush = 0;<BR> }</P> <P> if (m_hBMP)<BR> {<BR> ::DeleteObject(m_hBMP);<BR> m_hBMP = 0;<BR> }<BR> return S_OK;<BR> }//以上是照用CustomFillSymbol的不知道对不对</P> <P> STDMETHOD(Draw)(LONG hDC, LONG x, LONG y)<BR> {<BR> 这里要做的可能是设置载入的图片以某个点为中心显示.</P> <P> return S_OK;}</P> <P>肯请高手赐教,也欢迎有类似问题的一起讨论</P> |
|
|