日期:2014-05-18  浏览次数:20824 次

这几天的问题都没人回答。。。CSDN果然今非昔比呀
函数及结构体定义在下边有代码。。。
现在问题是不报错但也显示不出来图像
 private void MainForm_Load(object sender, EventArgs e)
  {
  //建立链接
  if (!C__Funtion.setupLongConn(""))
  return;


  //初始化GDI+,难道这里也要调用GDIPLUS。DLL GdiplusStartup()?  
  gmap = this.MapContainer.CreateGraphics();

  //画图层
  C__Funtion.PaintInView(C__Funtion.tmpsPnt, //图层数组
  C__Funtion.tmpsPnt.Length, //数组长度  
  C__Funtion.GetDC(this.MapContainer.Handle), //窗口HDC句柄
  100, //宽度
  100, //高度
  100.0, //中心位置-X
  100.0, //中心位置-Y
  9, //精细度
  enumPTIVflag.PTIV_R2PSMP);
  }
  }
   
[DllImport("TQSDEModule.dll", CharSet = CharSet.Ansi)]
public extern static bool setupLongConn(string lpszConn);
[DllImport("TQSDEModule.dll", CharSet = CharSet.Ansi)]
public extern static void PaintInView(
  sPnt[] pntTypeArray,
  int arrSize,
  IntPtr pDC,
  int rcWidth,
  int rcHeight,
  double central_x,
  double central_y,
  int level,
  enumPTIVflag ptivflag);
   
public struct sPnt
  {
  public enumShangHaiVecType ishType;
  public bool bPaint;
  public char szFilter;

  public sPnt(enumShangHaiVecType _ishType, bool _bPaint, char _szFilter)
  {
  this.ishType = _ishType;
  this.bPaint = _bPaint;
  this.szFilter = _szFilter;
  }
  }
   
  #region 重绘图层操作类型
  /// <summary>
  /// 
  /// </summary>
  public enum enumPTIVflag 
  {
  PTIV_R2PSMP, 
  PTIV_R2PPRO, 
  PTIV_ONLYPAINT, 
  PTIV_NONE
  }
  #endregion

------解决方案--------------------
gmap的GetHdc 方法就可以得到HDC啊,它就是C++里面的HDC,只不过在C#里面是IntPtr类型

这东西成没成功也不能光看你这头,要联合调试
------解决方案--------------------
路过,虽然不太懂,仍希望有人能帮你解决!
------解决方案--------------------
问题要有人回答就一定要有人顶,往死里顶!
------解决方案--------------------
没研究过!
------解决方案--------------------
不熟悉这方面,帮你顶顶
------解决方案--------------------
探讨
gmap的GetHdc 方法就可以得到HDC啊,它就是C++里面的HDC,只不过在C#里面是IntPtr类型

这东西成没成功也不能光看你这头,要联合调试

------解决方案--------------------
这方面没弄过
帮你顶下了
------解决方案--------------------
虽然我不懂,但我会尽力帮顶!
------解决方案--------------------
up
------解决方案--------------------
为什么是48分呢?
------解决方案--------------------