医学四视图-004-四视图增加文字显示

Posted DreamLife.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了医学四视图-004-四视图增加文字显示相关的知识,希望对你有一定的参考价值。

​ 这篇文章中就要给我的四视图增加文字显示了,这个东西就是在我摄像机上面的,不会随着图像变化而变化,感觉这个是不是就是在3D中的那种HUD呢。

1 效果展示

​ 如下图所示,在每个图的左上角和左下角有文字显示,左上角显示的病人的基本信息,左下角显示的是当前切面。

2 vtkTextActor

​ 实现文字显示,主要将用到vtkTextActor,这里还是把参考链接附上

https://vtk.org/doc/nightly/html/classvtkTextActor.html

回家截图

3 实现代码

3.1 头文件

​ 既然用到了vtkTextActor那就就要包含他的头文件了,后面需要设置颜色啥的,所以需要我们顺便把属性头文件也包含了。如下

#include "vtkTextActor.h"
#include "vtkTextProperty.h"

​ 新建变量

vtkSmartPointer<vtkTextActor> textActor[4];
vtkSmartPointer<vtkTextActor> peopleInforTextActor[4];

3.2 源文件实现

3.2.1 新建变量,赋值,设置属性

for (auto i=0;i<4;i++)
{
    textActor[i] = vtkSmartPointer<vtkTextActor>::New();
    textActor[i]->SetDisplayPosition(5, 5);
    textActor[i]->GetTextProperty()->SetFontSize(14);
    textActor[i]->GetTextProperty()->SetFontFamily(VTK_FONT_FILE);
    textActor[i]->GetTextProperty()->SetFontFile(QString("./Fonts/simhei.ttf").toUtf8());
}
textActor[0]->SetInput(QString::fromUtf8("矢状").toUtf8());
textActor[0]->GetTextProperty()->SetColor(0, 1, 0);
textActor[1]->SetInput(QString::fromUtf8("冠状").toUtf8());
textActor[1]->GetTextProperty()->SetColor(0, 0, 1);
textActor[2]->SetInput(QString::fromUtf8("轴向").toUtf8());
textActor[2]->GetTextProperty()->SetColor(1, 0, 0);
textActor[3]->SetInput(QString::fromUtf8("3D").toUtf8());
textActor[3]->GetTextProperty()->SetColor(1, 1, 0);
for (auto i=0;i<4;i++)
{
    peopleInforTextActor[i] = vtkSmartPointer<vtkTextActor>::New();
    peopleInforTextActor[i]->GetTextProperty()->SetFontSize(14);
    peopleInforTextActor[i]->GetTextProperty()->SetFontFamily(VTK_FONT_FILE);
    peopleInforTextActor[i]->GetTextProperty()->SetFontFile(QString("./Fonts/simhei.ttf").toUtf8());
    peopleInforTextActor[i]->SetInput(reader->GetPatientName());
}
peopleInforTextActor[0]->GetTextProperty()->SetColor(0, 1, 0);
peopleInforTextActor[0]->SetDisplayPosition(5,ui->widget_1->height()-20);
peopleInforTextActor[1]->GetTextProperty()->SetColor(0, 0, 1);
peopleInforTextActor[1]->SetDisplayPosition(5,ui->widget_2->height()-20);
peopleInforTextActor[2]->GetTextProperty()->SetColor(1, 0, 0);
peopleInforTextActor[2]->SetDisplayPosition(5,ui->widget_3->height()-20);
peopleInforTextActor[3]->GetTextProperty()->SetColor(1, 1, 0);
peopleInforTextActor[3]->SetDisplayPosition(5,ui->widget_4->height()-20);

3.2.2 加入到渲染器中

​ 我这里有两种,如下:

riw[i]->GetRenderer()->AddActor(textActor[i]);
riw[i]->GetRenderer()->AddActor(peopleInforTextActor[i]);
ren->AddActor(textActor[3]);
ren->AddActor(peopleInforTextActor[3]);

​ 详细内容见源码

☞ 源码

源码链接:https://github.com/DreamLife-Jianwei/Qt-Vtk

使用方法:☟☟☟


以上是关于医学四视图-004-四视图增加文字显示的主要内容,如果未能解决你的问题,请参考以下文章

医学四视图-007-增加按钮,增加文档提示

医学四视图-008-增加十字线开关功能,按钮显隐功能

医学四视图-002-四视图实现

医学四视图-001-基本框架搭建

医学四视图-001-基本框架搭建

医学四视图-009-保证病人信息一直显示在左上角