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中显示文本标签。