VTK/Examples/Cxx/Images/ImageText
From KitwarePublic
< VTK | Examples | Cxx(Redirected from VTK/Examples/Cxx/Broken/Images/ImageText)
This example demonstrates how to draw text onto an image.
ImageText.cxx
#include <vtkImageBlend.h> #include <vtkImageData.h> #include <vtkPointData.h> #include <vtkPNGWriter.h> #include <vtkSmartPointer.h> #include <vtkFreeTypeUtilities.h> #include <vtkTextProperty.h> #include <vtkImageCanvasSource2D.h> // must build VTK with VTK_USE_SYSTEM_FREETYPE=ON int main(int argc, char* argv[]) { // Create a black image with a red circle of radius 5 centered at (9,10) vtkSmartPointer<vtkImageCanvasSource2D> drawing = vtkSmartPointer<vtkImageCanvasSource2D>::New(); drawing->SetScalarTypeToUnsignedChar(); drawing->SetNumberOfScalarComponents(3); drawing->SetExtent(0, 100, 0, 200, 0, 0); drawing->FillBox(0,20,0,50); drawing->SetDrawColor(255, 0, 0, 0); drawing->DrawCircle(9, 10, 5); drawing->Update(); // Create an image of text vtkSmartPointer<vtkFreeTypeUtilities> freeType = vtkSmartPointer<vtkFreeTypeUtilities>::New(); vtkSmartPointer<vtkTextProperty> textProperty = vtkSmartPointer<vtkTextProperty>::New(); textProperty->SetColor( 0.0,0.0,1.0 ); // blue textProperty->SetFontSize(10); vtkSmartPointer<vtkImageData> textImage = vtkSmartPointer<vtkImageData>::New(); freeType->RenderString(textProperty, "Test String", 20, 40, textImage); // Combine the images vtkSmartPointer<vtkImageBlend> blend = vtkSmartPointer<vtkImageBlend>::New(); blend->AddInputConnection(drawing->GetOutputPort()); blend->AddInputConnection(textImage->GetProducerPort()); blend->SetOpacity(0,.5); blend->SetOpacity(1,.5); blend->Update(); vtkSmartPointer<vtkPNGWriter> writer = vtkSmartPointer<vtkPNGWriter>::New(); writer->SetFileName("output.png"); writer->SetInputConnection(blend->GetOutputPort()); writer->Write(); return EXIT_SUCCESS; }
CMakeLists.txt
cmake_minimum_required(VERSION 2.8) PROJECT(ImageText) find_package(VTK REQUIRED) include(${VTK_USE_FILE}) if (APPLE) add_executable(ImageText MACOSX_BUNDLE ImageText.cxx) else() add_executable(ImageText ImageText.cxx) endif() if(VTK_LIBRARIES) target_link_libraries(ImageText ${VTK_LIBRARIES}) else() target_link_libraries(ImageText vtkHybrid ) endif()