opencascade AIS_TextLabel源码学习【重要】 原创

opencascade AIS_TextLabel
opencascade 显示文字

前言

在这里插入图片描述
显示文字

方法

1

默认构造函数
Standard_EXPORT AIS_TextLabel();

2

//! 对支持的显示模式返回TRUE。
AcceptDisplayMode (const Standard_Integer theMode) const Standard_OVERRIDE { return theMode == 0; }

3

设置整个文本的颜色。
void SetColor (const Quantity_Color& theColor) ;

4

//! 设置透明度在[0, 1]范围内。
void SetTransparency (const Standard_Real theValue) ;

5

//! 取消透明设置。
virtual void UnsetTransparency() Standard_OVERRIDE { SetTransparency (0.0); }

6

材料对文本标签没有影响。
void SetMaterial (const Graphic3d_MaterialAspect& ) Standard_OVERRIDE {}

7

设置文本。
void SetText (const TCollection_ExtendedString& theText);

8

设置位置。
Standard_EXPORT void SetPosition (const gp_Pnt& thePosition);

9

设置水平对齐。
void SetHJustification (const Graphic3d_HorizontalTextAlignment theHJust);

10

设置垂直对齐。
void SetVJustification (const Graphic3d_VerticalTextAlignment theVJust);

11

设置角度。
Standard_EXPORT void SetAngle (const Standard_Real theAngle);

12

设置可缩放属性。
void SetZoomable (const Standard_Boolean theIsZoomable);

13

设置高度。
void SetHeight (const Standard_Real theHeight);

14

设置字体特性。
void SetFontAspect (const Font_FontAspect theFontAspect);

15

设置字体。
void SetFont (Standard_CString theFont);

17

在模型3D空间中设置标签方向。
Standard_EXPORT void SetOrientation3D (const gp_Ax2& theOrientation);

18

重置模型3D空间中的标签方向。
void UnsetOrientation3D ();

19

返回位置。
gp_Pnt& Position() const;

20

//! 返回标签文本。
TCollection_ExtendedString& Text() const { return myText; }

21

返回标签文本的字体。
const TCollection_AsciiString& FontName() const;

22

//! 返回标签文本的字体特性。
Standard_EXPORT Font_FontAspect FontAspect() const;

23

返回模型3D空间中的标签方向。
gp_Ax2& Orientation3D() const;

24

//! 如果当前文本放置模式使用模型3D空间中的文本方向,则返回true。
Standard_Boolean HasOrientation3D() const;

25

void SetFlipping (const Standard_Boolean theIsFlipping);

26

Standard_Boolean HasFlipping() const;

27

如果文本使用位置作为附加点,则返回标志。
Standard_Boolean HasOwnAnchorPoint() const { return myHasOwnAnchorPoint; }

28

设置文本是否使用位置作为附加点。
void SetOwnAnchorPoint (const Standard_Boolean theOwnAnchorPoint) { myHasOwnAnchorPoint = theOwnAnchorPoint; }

29

定义文本的显示类型。

TODT_NORMAL 默认显示。仅文本。
TODT_SUBTITLE 文本下方有副标题。
TODT_DEKALE 文本以3D风格显示。
TODT_BLEND 文本以XOR方式显示。
TODT_DIMENSION 文本下方的尺寸线将不可见。
void SetDisplayType (const Aspect_TypeOfDisplayText theDisplayType);

30

//! 修改TODT_SUBTITLE文本显示类型的副标题颜色
//! 和TODT_DEKALE文本显示类型的背景颜色。
Standard_EXPORT void SetColorSubTitle (const Quantity_Color& theColor);

31

//! 返回文本呈现格式化程序;默认情况下为NULL,表示将使用标准文本格式化程序。
const Handle(Font_TextFormatter)& TextFormatter() const { return myFormatter; }

32

//! 设置文本的呈现格式化程序。默认为空。
void SetTextFormatter (const Handle(Font_TextFormatter)& theFormatter) { myFormatter = theFormatter; }

33

//! 计算
Standard_EXPORT virtual void Compute (const Handle(PrsMgr_PresentationManager)& theprsMgr,
const Handle(Prs3d_Presentation)& thePrs,
const Standard_Integer theMode) Standard_OVERRIDE;

34

//! 计算选择
Standard_EXPORT virtual void ComputeSelection (const Handle(SelectMgr_Selection)& theSelection,
const Standard_Integer theMode) Standard_OVERRIDE;

35

//! 计算标签中心、宽度和高度
Standard_EXPORT Standard_Boolean calculateLabelParams (const gp_Pnt& thePosition,gp_Pnt& theCenterOfLabel,
Standard_Real& theWidth, Standard_Real& theHeight) const;

36

//! 计算标签变换
Standard_EXPORT gp_Trsf calculateLabelTrsf (const gp_Pnt& thePosition, gp_Pnt& theCenterOfLabel) const;

用法示例

OpenCascade中的AIS_TextLabel类用于在3D场景中显示文本标签,以下是一个简单的用法示例:

#include <AIS_TextLabel.hxx>
#include <Prs3d_TextAspect.hxx>
#include <Quantity_Color.hxx>
#include <gp_Pnt.hxx>
#include <Graphic3d_AspectText3d.hxx>
#include <Graphic3d_VerticalTextAlignment.hxx>
#include <Graphic3d_HorizontalTextAlignment.hxx>

void createTextLabel(const gp_Pnt& position, const TCollection_ExtendedString& text) {
    // 创建AIS_TextLabel对象
    Handle(AIS_TextLabel) textLabel = new AIS_TextLabel();

    // 设置文本内容
    textLabel->SetText(text);

    // 设置文本位置
    textLabel->SetPosition(position);

    // 设置文本的颜色
    Quantity_Color color(1.0, 0.0, 0.0, Quantity_TOC_RGB);  // 红色
    textLabel->SetColor(color);

    // 设置文本的垂直和水平对齐方式
    textLabel->SetHJustification(Graphic3d_HTA_LEFT);  // 水平左对齐
    textLabel->SetVJustification(Graphic3d_VTA_BOTTOM);  // 垂直底部对齐

    // 设置文本的高度
    textLabel->SetHeight(15.0);  // 设置文本高度为15个单位

    // 添加文本标签到场景显示中
    // 假设prsMgr是PrsMgr_PresentationManager的一个实例,thePrs是Prs3d_Presentation的一个实例
    prsMgr->SetView(thePrs);
    textLabel->Compute(prsMgr, thePrs, 0);
}

int main() {
    // 创建一个示例的点位置
    gp_Pnt position(0.0, 0.0, 0.0);

    // 创建一个示例的文本内容
    TCollection_ExtendedString text("Hello, OpenCascade!");

    // 创建文本标签并添加到场景中显示
    createTextLabel(position, text);

    return 0;
}

在上面的示例中,我们首先创建了一个AIS_TextLabel对象,并设置了文本内容、位置、颜色、对齐方式和高度等属性。然后将文本标签通过Compute方法添加到场景中显示。这个示例展示了如何使用AIS_TextLabel类在OpenCascade中显示文本标签。

参考

posted @ 2024-08-02 08:45  一点灯  阅读(0)  评论(0编辑  收藏  举报  来源