hyb1011
路人甲
路人甲
  • 注册日期2004-07-22
  • 发帖数73
  • QQ
  • 铜币114枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1600回复:0

再问~关于MO自定义符号ICustomMarker(VC+MO)

楼主#
更多 发布于:2005-11-27 23:08
<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>
喜欢0 评分0
QQ:22621544 欢迎交流~^^~
游客

返回顶部