GDAL C++ API 学习之路 (3)OGRFeature Style 要素样式类 OGRStyleTool

Class OGRStyleTool        class OGRStyleTool

此类表示样式工具

OGRStyleTool 是 OGR 样式工具的基类,用于表示不同类型的样式工具。它是 GDAL/OGR 库中的一部分,用于处理和管理地理数据的样式和渲染

定义要素或图层的样式,例如线条的颜色、填充的模式、文本的字体等。它们允许用户自定义地理数据的外观和呈现方式

Public Functions:

inline OGRStyleTool()

explicit OGRStyleTool(OGRSTClassId eClassId)        构造函数

virtual ~OGRStyleTool() 析构函数

GetType

OGRSTClassId GetType()

确定样式工具的类型

返回:

样式工具类型,OGRSTCPen (1)、OGRSTCBrush (2)、OGRSTCSymbol (3) 或 OGRSTCLabel (4) 之一。如果 OGRStyleToolH 无效,则返回 OGRSTCNone (0)

// 创建一个 OGRStyleTool 对象
OGRStyleTool* styleTool = new OGRStyleTool();
styleTool->SetSymbol("SYMBOL(d:0x0033FF)");

// 获取样式工具对象类型
OGRSTClassId typeId = styleTool->GetType();

OGRSTClassId 是一个枚举类型 

  • OGRSTCPen:笔样式工具
  • OGRSTCBrush:填充样式工具
  • OGRSTCSymbol:符号样式工具
  • OGRSTCText:文本样式工具
  • OGRSTCLabel:标注样式工具
  • OGRSTCVector:矢量样式工具
  • OGRSTCRaster:栅格样式工具
  • OGRSTCComposite:复合样式工具

SetUnit

void SetUnitOGRSTUnitId, double dfScale = 1.0)

设置样式工具单位

参数:

  • eUnit -- 新单元。

  • dfGroundPaperScale -- 地面到纸张的比例因子

// 创建一个 OGRStyleTool 对象
OGRStyleTool* styleTool = new OGRStyleTool();
styleTool->SetSymbol("SYMBOL(d:0x0033FF)");

// 设置样式工具的单位和比例
OGRSTUnitId unitId = OGRSTUPixel;
double scale = 0.5;
styleTool->SetUnit(unitId, scale);

OGRSTUnitId 是一个枚举类型

  • OGRSTUPixel:像素单位
  • OGRSTUPoint:点单位
  • OGRSTUMM:毫米单位
  • OGRSTUCM:厘米单位
  • OGRSTUMeter:米单位

GetUnit

inline OGRSTUnitId GetUnit()

获取样式工具单位

返回: 样式工具单元

// 创建一个 OGRStyleTool 对象
OGRStyleTool* styleTool = new OGRStyleTool();
styleTool->SetSymbol("SYMBOL(d:0x0033FF)");
styleTool->SetUnit(OGRSTUMM);

// 获取样式工具的单位类型
OGRSTUnitId unitId = styleTool->GetUnit();

Public Static Functions

GetRGBFromString

static GBool GetRGBFromStringconst char *pszColor, int &nRed, int &nGreen, int &nBlue, int &nTransparence)

返回以 #RRGGBB[AA] 格式编码的颜色的 r,g,b,a 分量

参数:

  • pszColor -- 要解析的颜色

  • nRed -- 对将返回红色值的 int 的引用。

  • nGreen -- 对将返回绿色值的 int 的引用。

  • nBlue -- 对将返回蓝色值的 int 的引用。

  • nTransparance -- 引用将返回(可选)alpha 值的 int。

返回: 如果可以成功解析颜色,则为 TRUE,如果出现错误,则为 FALSE

int red, green, blue, transparence;
    const char* color = "#FF0000";

    if (ColorUtility::GetRGBFromString(color, red, green, blue, transparence)) {
        std::cout << "Red: " << red << std::endl;
        std::cout << "Green: " << green << std::endl;
        std::cout << "Blue: " << blue << std::endl;
        std::cout << "Transparence: " << transparence << std::endl;
    } else {
        std::cout << "Invalid color string" << std::endl;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

场主不吃鍋巴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值