• [C++][vtk][转载]利用vtk绘制文本


    测试环境:

    vs2019专业版

    vtk9.1

    代码:

    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include  
    VTK_MODULE_INIT(vtkRenderingOpenGL2);
    VTK_MODULE_INIT(vtkInteractionStyle);
    const char* const HELLO_TEXT = "Hello world";

    int main(int argc, char* argv[])
    {


        auto sphereSource =
            vtkSmartPointer::New();
        sphereSource->SetRadius(3.0);
        sphereSource->SetCenter(0.0, 0.0, 0.0);

        auto sphereMapper =
            vtkSmartPointer::New();
        sphereMapper->SetInputConnection(sphereSource->GetOutputPort());
        auto sphereActor =
            vtkSmartPointer::New();
        sphereActor->SetMapper(sphereMapper);
        sphereActor->GetProperty()->SetOpacity(0.3);

        auto renderer =
            vtkSmartPointer::New();
        renderer->AddActor(sphereActor);
        auto renWindow =
            vtkSmartPointer::New();
        renWindow->SetSize(400, 400);
        renWindow->AddRenderer(renderer);
        auto interactor =
            vtkSmartPointer::New();
        interactor->SetRenderWindow(renWindow);

        int dtype = 2;
        if (dtype == 1)
        {
            auto textActor =
                vtkSmartPointer::New();
            textActor->SetInput(HELLO_TEXT);
            textActor->SetPosition2(20, 40);
            textActor->GetTextProperty()->SetColor(1.0, 0.0, 0.0);
            textActor->GetTextProperty()->SetFontSize(24);
            renderer->AddActor2D(textActor);
        }
        else if (dtype == 2 || dtype == 3)
        {
            auto textSource =
                vtkSmartPointer::New();
            textSource->SetText(HELLO_TEXT);
            auto textMapper =
                vtkSmartPointer::New();
            textMapper->SetInputConnection(textSource->GetOutputPort());
            if (dtype == 2)
            {
                auto textActor =
                    vtkSmartPointer::New();
                textActor->SetMapper(textMapper);
                textActor->GetProperty()->SetColor(1.0, 0.0, 0.0);
                renderer->AddActor(textActor);
            }
            else if (dtype == 3)
            {
                auto textFollower =
                    vtkSmartPointer::New();
                textFollower->SetMapper(textMapper);
                textFollower->GetProperty()->SetColor(1.0, 0.0, 0.0);
                textFollower->SetCamera(renderer->GetActiveCamera());
                renderer->AddActor(textFollower);
            }
        }

        renWindow->Render();
        renderer->ResetCamera();
        renWindow->Render();
        interactor->Start();

        return EXIT_SUCCESS;
    }
    结果:

     

  • 相关阅读:
    HarmonyOS小白入门设备开发的“芯”路历程
    面试官:什么是MySQL 事务与 MVCC 原理?
    Centos 8 安装 nginx
    【JavaScript】特殊格式的字符串—— JSON
    UE5 官方案例LyraStarter 全特性详解 4.创建队伍
    Chapter5.5:频率响应法
    ptc热烫头切纸控制
    Explain详解与实践
    vue3.0的setup函数以及解决其内的数据不是响应式数据的问题
    Spring 常犯的十大错误,打死都不要犯
  • 原文地址:https://blog.csdn.net/FL1623863129/article/details/126909995