问题描述
用C#做的TrueTYPE字体读取,参考C++的代码,想把其转到C#下,遇到些技术问题,请各指点一二:C++#defineGHND(GMEM_MOVEABLE|GMEM_ZEROINIT)HANDLEhMem;hMem=GlobalAlloc(GHND,dwSize);lpph=(LPTTPOLYGONHEADER)GlobalLock(hMem);C#IntPtrhMem=Marshal.AllocHGlobal(bufferSize);lpph=(GLYPHMETRICS)GlobalLock((HandleRef)hMem);类型转换不正确
解决方案
解决方案二:
解决方案三:
自己顶一下,高手在哪儿?
解决方案四:
自己顶一下,高手在哪儿?
解决方案五:
自己顶一下,高手在哪儿?
解决方案六:
http://bbs.csdn.net/topics/390114478
解决方案七:
帮顶!
解决方案八:
谢谢caozhy不过,我主要是取TrueTYPE中的曲线控制点,目的是绘制出轮廓曲线,最后要转为刻字的程序,不知有无好的建议。再次感谢你的回复。
解决方案九:
LPTTPOLYGONHEADER是指针类型,GlobalLock的返回值的类型也是指针类型,所以可以强制转换。GLYPHMETRICS是怎么定义的?它是指针吗?
解决方案十:
u010936098:谢谢啊lpph=(GLYPHMETRICS)GlobalLock((HandleRef)hMem);我这儿有个疏忽,应该是lpph=(TTPOLYGONHEADER)GlobalLock((HandleRef)hMem);一直有报警,就修改类型尝试解决,最后发帖的也错了。抱歉。publicstructTTPOLYGONHEADER{intcb;intdwType;PointFpfxStart;}
解决方案十一:
最新的分析参考看过一片文章,对照发现在DLL定义时有些问题。原来是:publicstaticexternIntPtrGlobalLock(HandleRefhandle);后来改为这样的表达。publicstaticexternIntPtrGlobalLock(IntPtrhandle);现在的问题还是这段有报警,lpph=(TTPOLYGONHEADER)GlobalLock(hMem);不过,我感觉应该是C++代码中用了指针,这儿不好直接用的。各位有啥好的建议。