vtk显示中文方法
vtk吧
全部回复
仅看楼主
level 4
vtk的字体显示使用的是ftgl库,ftgl是支持任何字体的,那么为什么vtk中显示不出中文呢?原因是vtk内部自定了几种字体,只允许你选择~~~ 在网上看过一些解决方法,貌似非常繁琐,笔者找到了一种方法,虽然不是优秀,但总的来说改动比较小,工作量也相应减小~~ 具体方法有时间慢慢添上:)大家别扔鸡蛋,时间宝贵,先写这么多
2006年12月29日 02点12分 1
level 0
waiting for you
2007年01月01日 07点01分 2
level 4
使用vtkTextActor->SetInput方法可以实现渲染窗口的文字输出,不幸的是vtk只支持英文的输出,中文就会变成乱码,为什么?首先要清楚vtk的字体渲染实现过程,好在vtk是开源的。(在这里先不管其他原因的鄙视中科院的MITK一下,先不管其代码怎么来的、写的如何,但就其单位性质来讲,拿着纳税人的钱就应该有点奉献精神吧,世界领先也就罢了,听说bug一大堆,国家的科研经费都让你们这群XX给败货了,不说了,说多了伤心)回到正题,vtk是开源的,有不清楚vtk来历的我可以再写开一个帖子来介绍,这里不错过多介绍。写测试代码进行跟踪吧测试代码如下: vtkTextActor* pTextActor = vtkTextActor::New(); pTextActor->SetDisplayPosition(150, 100); std::string tstrText = __("好主意网站 - http://www.gdidea.com.cn"); pTextActor->SetInput(strText.data()); vtkRenderer* pRender = vtkRenderer::New(); pRender->AddActor2D(pTextActor); vtkRenderWindow* pWindow = vtkRenderWindow::New(); pWindow->AddRenderer(pRender); pWindow->SetSize(400, 300); pWindow->Render();跟踪pWindow->Render()的代码,你会发现,如果是win32平台的操作系统,字体的渲染会通过一个名为vtkOpenGLFreeTypeTextMapper类中的RenderOverlay函数来执行的,通过对这个函数的跟踪发现,这段语句: vtkFreeTypeUtilities::Entry *entry = vtkFreeTypeUtilities::GetInstance()->GetFont(tprop, tprop_color);也许是产生乱码的线索,其中的tprop即是vtkTextProperty类型的指针,这段代码即为获取渲染的字体指针,那么vtk是如何进行字体设置呢?继续跟踪...(有时间继续) 本文地址: http://www.gdidea.com.cn/html/20071/77.htm 复制 版权声明:本文为zx_sanjin原创发表,本网站《服务条款》享有相关权利。
2007年01月04日 05点01分 3
level 0
如果用TCL的话,本身就支持中文的
2008年12月01日 01点12分 4
level 0
221.7.40.*4楼
如果用TCL的话,本身就支持中文的
↑本身支持和显示出来是两码事吧 :)
2009年12月31日 09点12分 5
level 0
知道美国在VTK,ITK上投入了多少钱吗???中国对科研软件的开发投入又有多少??mitk开发是没有多少资金投入的,而且主要是以研究生为主开发,VTK和ITK现在是由kitware公司维护的,论投入产出比还不见怎样呢,支持国产!
2010年07月16日 06点07分 6
level 4
你用过mitk?
2012年02月18日 11点02分 7
level 12
中文的显示方法网友已经解决了,并且给出了几个类,下面借花献佛:
[无效] http://pan.baidu.com/share/link?shareid=10260&uk=4144455223[Love]
2012年08月31日 15点08分 8
你用这个方法实现了吗?
2013年04月09日 08点04分
回复 xumg2007 :这个真没有,不过我记得作者有实现的贴图,
2013年04月09日 13点04分
回复 rabbitbride :是有贴图啊,但是我做的时候没能成功,现在分析应该是加类之后重新CMAKE的问题,CMAKE的时候出错了,所有想找个已经实现的人问问
2013年04月10日 00点04分
回复 xumg2007 :哦 那我也抽时间研究下~[呵呵]。弄明白了来交流哦~
2013年04月10日 04点04分
level 12
2013年04月18日 08点04分 9
@xumg2007 快来,我试过了,那个类是可以用的,我重新编译的VTK[Love]
2013年04月18日 08点04分
回复 rabbitbride :居然可以,太好了,但是我为什么没能成功呢?你就是按他说的步骤做的吗?
2013年04月18日 09点04分
回复 xumg2007 :嗯 ,按他pdf教程的步骤做,如果出错,贴图
2013年04月18日 14点04分
回复 rabbitbride :能看清吧。就是说“FTFont”是未定义类型
2013年04月19日 00点04分
level 6
@rabbitbride 编译的时候提示这个错误,我之前尝试不改变 VTK 的 Lib 库接口,直接把这三个类当作一般的类来使用,也提示这样的错误
2013年04月19日 00点04分 10
会不会是版本问题啊~ 我的版本是5.6.1。原作者的版本的5.8.0~ 你用的什么操作系统
2013年04月19日 01点04分
回复 rabbitbride :我用的是xp,VTK 5.10.0
2013年04月19日 01点04分
回复 rabbitbride :不会是因为我的VTK版本高了不兼容吧?
2013年04月19日 01点04分
回复 rabbitbride :我把我的VTK版本从5.10换到5.6,在运行例程的时候提示“vtk.exe 中的 0x014e20e1 (vtkCommon.dll) 处未处理的异常: 0xC0000005: 读取位置 0xfdfdfe15 时发生访问冲突”,我又从5.6换到5.8,还是提示这个问题,怎么回事?
2013年04月19日 09点04分
level 6
@rabbitbride 还有这个,提示“\VTK 5.10.0\VTK\Rendering\vtkFreeTypeUtilitiesUnicode.cpp(93) : error C2653: “FTLibraryCleanup” : 不是类或命名空间名称”
2013年04月19日 01点04分 11
恩呢,要的就是这个错误,这个错误我改了。不着急的话,明天帮你找原因~
2013年04月21日 15点04分
回复 rabbitbride :快快出现吧[哈哈]
2013年04月22日 00点04分
回复 xumg2007 :这个是5.10的版本出现的问题,你说要的就是这个错误,那我这个版本还要换吗?
2013年04月22日 01点04分
回复 xumg2007 :哎,这个我也没弄明白,在Linux下这种情况根本就不会发生。。。
2013年04月23日 04点04分
level 12
@xumg2007
先将类似这句的:singleLineTextB->GetTextProperty()->ShallowCopy(singleLineTextProp); 都改成singleLineTextB->SetTextProperty(singleLineTextProp);//winston
然后,类似这句的都注释掉://static_cast<vtkTextPropertyUnicode*>(singleLineTextB->GetTextProperty())//->SetFontFileName("C:\\Windows\\Fonts\\DFPShaoNvW5-GB.ttf");
最后,在前面自己写个 singleLineTextProp->SetFontFileName("C:\\Windows\\Fonts\\DFPShaoNvW5-GB.ttf");//winston
这个方法是针对你那个error的。[Love]试试?
2013年04月22日 09点04分 12
恩,试了再来
2013年04月23日 00点04分
回复 xumg2007 :可以显示汉字了,但是显示的还是有点问题,三个都是顶对齐,字体的话,为什么只能用DFPShaoNvW5-GB.ttf,我换SinHei.ttf就不行,还有就是pHead这个指针还是有错
2013年04月23日 01点04分
回复 xumg2007 :回复 xumg2007 :字体可以换的吧?你看我的贴图就是自己换了字体的。 顶对齐是因为在最前面统一声明吧?修改细节,这个应该能解决。
2013年04月23日 04点04分
回复 rabbitbride :恩,好的,我再改改!谢啦!
2013年04月23日 05点04分
level 12
应该会有更好的中文显示方法,抽时间研究下~~,
我觉得显得VTK包或许会直接支持Unicode中文?
@xumg2007 有了好方法记得贴出来分享下,呵呵
2013年04月22日 10点04分 13
。。。两错字。不是显得 是新的
2013年04月22日 10点04分
level 6
@rabbitbride 这样改的?
2013年04月23日 08点04分 14
level 1
图片来自: 阴天盖顶的百度相册@rabbitbride 大神啊,我这边郁闷了一天了,调整了很多地方,一开始直接内存报错,后来总算是能运行了,但是是这东西。。。字符集已经是使用 Unicode 字符集了
2013年04月27日 07点04分 15
你选的字体不支持,换个字体就可以了,simli.ttf或者msyh.ttf
2013年05月08日 01点05分
level 1
在线等啊@rabbitbride 今晚做不出来不睡觉了!!!!
2013年04月27日 07点04分 16
你这个应该是字体问题,你从新下个载体放在font里再试
2013年04月28日 00点04分
昨被朋友叫去了,没上网。现在做出来了吗?
2013年04月28日 01点04分
回复 xumg2007 :这个试过了,不可以的,我单步运行了一下没看出来
2013年04月28日 04点04分
回复 rabbitbride :没,找了个耶鲁的博士,他opengl写程序很牛,让我用bitmap,把字体渲染成图片,拼接起来放到vtk的窗口里面去,不难,微软做了很多函数,包括什么GDI,Context Device什么的,就是麻烦
2013年04月28日 04点04分
level 12
这里把水灵提供的中文显示例子做一下简单的修改和精简,应该可以顺利显示了吧?
[无效] http://pan.baidu.com/share/link?shareid=421840&uk=4144455223
2013年04月28日 08点04分 17
今晚做测试
2013年04月28日 09点04分
这个精简版,执行不了,提示窗口内,都是出错信息。原版本倒是运行良好的。感谢火灵,也感谢 niujingqian对命名空间问题的解决。谢谢。对了,我用的是vtk5.10.1版本,win7 64位编译。
2013年07月11日 06点07分
回复 hyguan7818 :修正一下,精简版本也跑通有,原来是没有相应的字库,将字库名,修改为已有的字库,就显示出来了。非常感谢。
2013年07月11日 08点07分
依赖ftgl ,其他没办法了?
2015年08月28日 12点08分
level 1
2013年08月16日 13点08分 18
1