opencascade AIS_ColorScale源码学习 自定义多颜色刻度、颜色条

类AIS_ColorScale

用于绘制自定义颜色刻度的类。

颜色刻度由矩形颜色条(由固定数量的颜色区间组成)、可选标签和标题构成。标签可以放置在区间的边界处,也可以放置在每个区间的中间。颜色和标签可以自动定义或由用户设置。自动标签根据刻度的数值范围、刻度类型(对数或普通)计算,并按照指定的格式字符串进行格式化。
在这里插入图片描述
在这里插入图片描述

示例源码

方法

AIS_ColorScale()

AIS_ColorScale::AIS_ColorScale()

默认构造函数。

AcceptDisplayMode()

virtual Standard_Boolean AIS_ColorScale::AcceptDisplayMode(const Standard_Integer theMode) const inline override virtual

如果指定的显示模式受支持,则返回 true。

重写自 PrsMgr_PresentableObject。

ColorRange()

void AIS_ColorScale::ColorRange(Quantity_Color & theMinColor, Quantity_Color & theMaxColor) const inline

返回对应于最小值和最大值的颜色范围,默认为蓝色到红色。

Compute()

virtual void AIS_ColorScale::Compute(const Handle< PrsMgr_PresentationManager > & thePrsMgr, const Handle< Prs3d_Presentation > & thePresentation, const Standard_Integer theMode) override virtual

计算呈现效果。

实现自 PrsMgr_PresentableObject。

ComputeSelection()

virtual void AIS_ColorScale::ComputeSelection(const Handle< SelectMgr_Selection > &, const Standard_Integer) inline override virtual

计算选择 - 对颜色刻度未实现。

实现自 SelectMgr_SelectableObject。

FindColor() [1/3]

static Standard_Boolean AIS_ColorScale::FindColor(const Standard_Real theValue, const Standard_Real theMin, const Standard_Real theMax, const Standard_Integer theColorsCount, const Graphic3d_Vec3d & theColorHlsMin, const Graphic3d_Vec3d & theColorHlsMax, Quantity_Color & theColor) static

根据传递的值计算颜色;如果值在范围内则返回 true,否则返回 false。

FindColor() [2/3]

static Standard_Boolean AIS_ColorScale::FindColor(const Standard_Real theValue, const Standard_Real theMin, const Standard_Real theMax, const Standard_Integer theColorsCount, Quantity_Color & theColor) inline static

根据传递的值计算颜色;如果值在范围内则返回 true,否则返回 false。

FindColor() [3/3]

Standard_Boolean AIS_ColorScale::FindColor(const Standard_Real theValue, Quantity_Color & theColor) const

根据传递的值计算颜色;如果值在范围内则返回 true,否则返回 false。

Format()

const TCollection_AsciiString& AIS_ColorScale::Format() const inline

返回文本的格式。

GetBreadth()

Standard_Integer AIS_ColorScale::GetBreadth() const inline

返回颜色条的宽度,默认为 0(例如,应该在显示前由用户显式设置)。

GetColors() [1/2]

const Aspect_SequenceOfColor& AIS_ColorScale::GetColors() const inline

返回用户指定的颜色。

GetColors() [2/2]

void AIS_ColorScale::GetColors(Aspect_SequenceOfColor & theColors) const

返回用户指定的颜色。

GetColorType()

Aspect_TypeOfColorScaleData AIS_ColorScale::GetColorType() const inline

返回颜色类型,默认为 Aspect_TOCSD_AUTO。Aspect_TOCSD_AUTO - 在红色和蓝色之间的值 Aspect_TOCSD_USER - 用户从颜色图中指定的颜色。

GetFormat()

const TCollection_AsciiString& AIS_ColorScale::GetFormat() const inline

返回数字的格式,默认为 “%.4g”。类似于 printf() 函数的格式。如果 GetLabelType() 为 TOCSD_AUTO,则使用。

GetHeight()

Standard_Integer AIS_ColorScale::GetHeight() const inline

返回颜色条的高度,默认为 0(例如,应该在显示前由用户显式设置)。

GetIntervalColor()

Quantity_Color AIS_ColorScale::GetIntervalColor(const Standard_Integer theIndex) const

根据索引返回用户指定的颜色(从 1 开始)。如果索引超出颜色图范围,则返回默认颜色。

GetLabel()

TCollection_ExtendedString AIS_ColorScale::GetLabel(const Standard_Integer theIndex) const

根据索引返回用户指定的标签。索引范围从 1 到 GetNumberOfIntervals(),如果 IsLabelAtBorder() 为 true,则范围为 1 到 GetNumberOfIntervals() + 1。如果标签未定义,则返回空字符串。

GetLabelPosition()

Aspect_TypeOfColorScalePosition AIS_ColorScale::GetLabelPosition() const inline

返回标签相对于填充颜色矩形的位置,默认为 Aspect_TOCSP_RIGHT。

GetLabels()

void AIS_ColorScale::GetLabels(TColStd_SequenceOfExtendedString & theLabels) const

返回用户指定的标签。

GetLabelType()

Aspect_TypeOfColorScaleData AIS_ColorScale::GetLabelType() const inline

返回标签类型,默认为 Aspect_TOCSD_AUTO。Aspect_TOCSD_AUTO - 作为区间边界值的标签 Aspect_TOCSD_USER - 使用用户指定的标签。

GetMax()

Standard_Real AIS_ColorScale::GetMax() const inline

返回颜色刻度的最大值,默认为 1.0。

GetMin()

Standard_Real AIS_ColorScale::GetMin() const inline

返回颜色刻度的最小值,默认为 0.0。

GetNumberOfIntervals()

Standard_Integer AIS_ColorScale::GetNumberOfIntervals() const inline

返回颜色刻度区间的数量,默认为 10。

GetPosition()

void AIS_ColorScale::GetPosition(Standard_Real & theX, Standard_Real & theY) const inline

返回颜色刻度的左下角位置,默认为 0x0。

GetRange()

void AIS_ColorScale::GetRange(Standard_Real & theMin, Standard_Real & theMax) const inline

返回颜色刻度的最小值和最大值,默认为 0.0 到 1.0。

GetSize()

void AIS_ColorScale::GetSize(Standard_Integer & theBreadth, Standard_Integer & theHeight) const inline

返回颜色条的大小,默认为 0 和 0(例如,应该在显示前由用户显式设置)。

GetTextHeight()

Standard_Integer AIS_ColorScale::GetTextHeight() const inline

返回文本标签的字体高度,默认为 20。

GetTitle()

const TCollection_ExtendedString& AIS_ColorScale::GetTitle() const inline

返回颜色刻度的标题字符串,默认为空字符串。

GetTitlePosition()

Aspect_TypeOfColorScalePosition AIS_ColorScale::GetTitlePosition() const inline

返回颜色刻度标题的位置,默认为 Aspect_TOCSP_LEFT。

GetXPosition()

Standard_Integer AIS_ColorScale::GetXPosition() const inline

返回颜色刻度的左侧位置,默认为 0。

GetYPosition()

Standard_Integer AIS_ColorScale::GetYPosition() const inline

返回颜色刻度的底部位置,默认为 0。

HueMax()

Standard_Real AIS_ColorScale::HueMax() const inline

返回对应于最大值的色调角度,默认为 0(红色)。

HueMin()

Standard_Real AIS_ColorScale::HueMin() const inline

返回对应于最小值的色调角度,默认为 230(蓝色)。

HueRange()

void AIS_ColorScale::HueRange(Standard_Real & theMinAngle, Standard_Real & theMaxAngle) const inline

返回对应于最小值和最大值的色调角度范围,默认为 230 到 0(蓝色到红色)。

hueToValidRange()

static Standard_Real AIS_ColorScale::hueToValidRange(const Standard_Real theHue) inline static

将色调移至有效范围。亮度和饱和度应在有效范围 [0.0, 1.0] 内指定,但色调可能超出 Quantity_Color 范围,以指定插值的所需范围。

IsLabelAtBorder()

Standard_Boolean AIS_ColorScale::IsLabelAtBorder() const inline

返回 TRUE,如果标签放置在颜色区间的边界处,默认为 TRUE。自动生成的标签将显示在确切的位置:

  • 连接两个相邻区间的值(TRUE)
  • 区间中间的值(FALSE)
IsLogarithmic()

Standard_Boolean AIS_ColorScale::IsLogarithmic() const inline

返回 TRUE,如果颜色刻度具有对数区间,默认为 FALSE。

IsReversed()

Standard_Boolean AIS_ColorScale::IsReversed() const inline

返回 TRUE,如果标签和颜色按反序使用,默认为 FALSE。

  • 正常,底部到顶部顺序,最小值在底部,最大值在顶部。
  • 反序,顶部到底部顺序,最大值在底部,最小值在顶部。
IsSmoothTransition()

Standard_Boolean AIS_ColorScale::IsSmoothTransition() const inline

返回 TRUE,如果邻近区间之间的颜色过渡应该线性插值,默认为 FALSE。

Labels()

const TColStd_SequenceOfExtendedString& AIS_ColorScale::Labels() const inline

返回用户指定的标签。

MakeUniformColors()

static Aspect_SequenceOfColor AIS_ColorScale::MakeUniformColors(Standard_Integer theNbColors, Standard_Real theLightness, Standard_Real theHueFrom, Standard_Real theHueTo) static

生成具有相同亮度值的颜色序列,使用 CIE Lch 色彩空间中的色调值在指定范围内分布。颜色在范围内均匀分布,以使相邻颜色之间的感知差异相同。对于每种颜色,使用适合 sRGB 色域的最大彩度值。
参数
theNbColors - 要生成的颜色数量
theLightness - 要使用的亮度值(0 为黑)

SetBreadth()

void AIS_ColorScale::SetBreadth ( const Standard_Integer theBreadth )
inline

设置颜色条的宽度。

SetColorRange()

void AIS_ColorScale::SetColorRange ( const Quantity_Color & theMinColor,
const Quantity_Color & theMaxColor
)
inline

设置对应于最小值和最大值的颜色范围。

SetColors()

void AIS_ColorScale::SetColors ( const Aspect_SequenceOfColor & theSeq )

设置颜色刻度的颜色。序列长度应等于 GetNumberOfIntervals() 的返回值。

SetColorType()

void AIS_ColorScale::SetColorType ( const Aspect_TypeOfColorScaleData theType )
inline

设置颜色类型。Aspect_TOCSD_AUTO - 在红色和蓝色之间的值;Aspect_TOCSD_USER - 用户从颜色图中指定的颜色。

SetFormat()

void AIS_ColorScale::SetFormat ( const TCollection_AsciiString & theFormat )
inline

设置颜色刻度的自动标签格式规范。

SetHeight()

void AIS_ColorScale::SetHeight ( const Standard_Integer theHeight )
inline

设置颜色条的高度。

SetHueRange()

void AIS_ColorScale::SetHueRange ( const Standard_Real theMinAngle,
const Standard_Real theMaxAngle
)
inline

设置对应于最小值和最大值的色调角范围。有效角度范围为 [0, 360],详细信息见 Quantity_Color 和 Quantity_TOC_HLS。

SetIntervalColor()

void AIS_ColorScale::SetIntervalColor ( const Quantity_Color & theColor,
const Standard_Integer theIndex
)

设置指定区间的颜色。请注意,列表会自动调整大小以包括指定的索引。

参数

  • theColor:要设置的颜色值
  • theIndex:范围为 [1, GetNumberOfIntervals()] 的索引;如果指定为 -1,则附加到列表末尾
SetLabel()

void AIS_ColorScale::SetLabel ( const TCollection_ExtendedString & theLabel,
const Standard_Integer theIndex
)

设置索引处的颜色刻度标签。请注意,列表会自动调整大小以包括指定的索引。

参数

  • theLabel:新标签文本
  • theIndex:范围为 [1, GetNumberOfIntervals()] 或 [1, GetNumberOfIntervals() + 1](如果 IsLabelAtBorder() 为 true);如果指定为负索引,则标签附加到列表末尾
SetLabelAtBorder()

void AIS_ColorScale::SetLabelAtBorder ( const Standard_Boolean theOn )
inline

设置是否在颜色区间的边界处放置标签(默认值为 TRUE)。如果设置为 False,标签将绘制在颜色区间中而不是边界上。

SetLabelPosition()

void AIS_ColorScale::SetLabelPosition ( const Aspect_TypeOfColorScalePosition thePos )
inline

设置颜色刻度标签相对于颜色条的位置。

SetLabels()

void AIS_ColorScale::SetLabels ( const TColStd_SequenceOfExtendedString & theSeq )

设置颜色刻度标签。序列长度应等于 GetNumberOfIntervals() 的返回值,或者如果 IsLabelAtBorder() 为 true,则等于 GetNumberOfIntervals() + 1。如果序列长度与区间数不匹配,则这些标签将被视为“自由”标签,并位于与标签数量对应的虚拟区间中(IsLabelAtBorder() 标志在正常情况下具有相同效果)。

SetLabelType()

void AIS_ColorScale::SetLabelType ( const Aspect_TypeOfColorScaleData theType )
inline

设置标签类型。Aspect_TOCSD_AUTO - 作为区间边界值的标签;Aspect_TOCSD_USER - 使用用户指定的标签。

SetLogarithmic()

void AIS_ColorScale::SetLogarithmic ( const Standard_Boolean isLogarithmic )
inline

设置颜色刻度是否具有对数区间。

SetMax()

void AIS_ColorScale::SetMax ( const Standard_Real theMax )
inline

设置颜色刻度的最大值。

SetMin()

void AIS_ColorScale::SetMin ( const Standard_Real theMin )
inline

设置颜色刻度的最小值。

SetNumberOfIntervals()

void AIS_ColorScale::SetNumberOfIntervals ( const Standard_Integer theNum )

设置颜色刻度的区间数。

SetPosition()

void AIS_ColorScale::SetPosition ( const Standard_Integer theX,
const Standard_Integer theY
)
inline

设置颜色刻度的位置。

SetRange()

void AIS_ColorScale::SetRange ( const Standard_Real theMin,
const Standard_Real theMax
)

设置颜色刻度的最小值和最大值。请注意,值的顺序将被忽略 - 如果需要,最小值和最大值将被交换。应调用 ::SetReversed() 以交换显示顺序。

SetReversed()

void AIS_ColorScale::SetReversed ( const Standard_Boolean theReverse )
inline

设置是否反转标签和颜色的顺序。

SetSize()

void AIS_ColorScale::SetSize ( const Standard_Integer theBreadth,
const Standard_Integer theHeight
)
inline

设置颜色条的大小。

SetSmoothTransition()

void AIS_ColorScale::SetSmoothTransition ( const Standard_Boolean theIsSmooth )
inline

设置是否进行平滑颜色过渡。

SetTextHeight()

void AIS_ColorScale::SetTextHeight ( const Standard_Integer theHeight )
inline

设置颜色刻度文本的高度。

SetTitle()

void AIS_ColorScale::SetTitle ( const TCollection_ExtendedString & theTitle )
inline

设置颜色刻度的标题字符串。

SetTitlePosition()

void AIS_ColorScale::SetTitlePosition ( const Aspect_TypeOfColorScalePosition thePos )
inline

设置颜色刻度标题的位置。

SetUniformColors()

void AIS_ColorScale::SetUniformColors ( Standard_Real theLightness,
Standard_Real theHueFrom,
Standard_Real theHueTo
)
inline

通过在 CIE Lch 颜色空间中具有相同亮度值的颜色来填充颜色刻度,这些颜色按色调分布,并在连续颜色之间具有感知上均匀的差异。参数说明见 MakeUniformColors()。

SetXPosition()

void AIS_ColorScale::SetXPosition ( const Standard_Integer theX )
inline

设置颜色刻度的左侧位置。

SetYPosition()

void AIS_ColorScale::SetYPosition ( const Standard_Integer theY )
inline

设置颜色刻度的底部位置。

TextHeight()

Standard_Integer AIS_ColorScale::TextHeight ( const TCollection_ExtendedString & theText ) const

返回文本的高度。

参数

  • theText:要计算高度的文本。
TextSize()

void AIS_ColorScale::TextSize ( const TCollection_ExtendedString & theText,
const Standard_Integer theHeight,
Standard_Integer & theWidth,
Standard_Integer & theAscent,
Standard_Integer & theDescent
) const

TextWidth()

Standard_Integer AIS_ColorScale::TextWidth ( const TCollection_ExtendedString & theText ) const

返回文本的宽度。

参数

  • theText:要计算宽度的文本。

使用示例

以下是一个示例代码,展示如何使用 AIS_ColorScale 类及其一些方法。这个示例包括设置颜色刻度的各种属性,如宽度、高度、颜色范围、标签等。

#include <AIS_ColorScale.hxx>
#include <Aspect_SequenceOfColor.hxx>
#include <Quantity_Color.hxx>
#include <TCollection_AsciiString.hxx>
#include <TCollection_ExtendedString.hxx>

int main() {
    // 创建一个颜色刻度对象
    Handle(AIS_ColorScale) colorScale = new AIS_ColorScale();

    // 设置颜色条的宽度和高度
    colorScale->SetBreadth(20);
    colorScale->SetHeight(200);

    // 设置颜色范围
    Quantity_Color minColor(Quantity_NOC_RED);
    Quantity_Color maxColor(Quantity_NOC_BLUE);
    colorScale->SetColorRange(minColor, maxColor);

    // 设置颜色刻度的颜色
    Aspect_SequenceOfColor colors;
    colors.Append(Quantity_Color(Quantity_NOC_RED));
    colors.Append(Quantity_Color(Quantity_NOC_GREEN));
    colors.Append(Quantity_Color(Quantity_NOC_BLUE));
    colorScale->SetColors(colors);

    // 设置标签格式
    TCollection_AsciiString format("%.2f");
    colorScale->SetFormat(format);

    // 设置区间数量
    colorScale->SetNumberOfIntervals(5);

    // 设置标签
    TCollection_ExtendedString label1("Low");
    TCollection_ExtendedString label2("Medium");
    TCollection_ExtendedString label3("High");
    colorScale->SetLabel(label1, 1);
    colorScale->SetLabel(label2, 3);
    colorScale->SetLabel(label3, 5);

    // 设置标签位置
    colorScale->SetLabelPosition(Aspect_TOCSP_LEFT);

    // 设置标题
    TCollection_ExtendedString title("Temperature Scale");
    colorScale->SetTitle(title);

    // 设置颜色刻度的位置
    colorScale->SetPosition(10, 10);

    // 设置颜色刻度的文本高度
    colorScale->SetTextHeight(12);

    // 显示颜色刻度
    // 此处应有显示颜色刻度的代码,具体取决于所使用的3D图形环境,如Open CASCADE等。

    return 0;
}

在这个示例中,我们执行了以下操作:

  1. 创建一个 AIS_ColorScale 对象。
  2. 设置颜色条的宽度和高度。
  3. 设置颜色范围,从红色到蓝色。
  4. 设置颜色刻度的具体颜色,红色、绿色和蓝色。
  5. 设置标签格式为小数点后两位。
  6. 设置颜色刻度的区间数量为5。
  7. 设置颜色刻度的标签,分别在第1、3和5个区间上。
  8. 设置标签的位置在颜色条的左侧。
  9. 设置颜色刻度的标题为 “Temperature Scale”。
  10. 设置颜色刻度的位置。
  11. 设置颜色刻度文本的高度。

这个示例展示了如何配置一个 AIS_ColorScale 对象以满足特定需求。显示颜色刻度的代码将依赖于具体的3D图形环境,如Open CASCADE等,需要根据具体环境进行实现。

显示结果

在这里插入图片描述

示例源码

  • 39
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值