绘图对象
在 HiEasyX 中,绘图对象是指 HXBufferPainter
对象。HXBufferPainter
对象定义在 include/impl/hex_impl.h
下。大致定义如下:
HX_IMPL_API class HXBufferPainter {
public:
virtual ~HXBufferPainter() = default;
public:
virtual void DrawLine(HXPoint Point1, HXPoint Point2, HXColor Color) = 0;
virtual void DrawLineStyled(HXPoint Point1, HXPoint Point2, HXColor Color, HXLineStyle Style) = 0;
virtual void DrawFilledRectangle(HXRect Rect, HXColor Color, HXColor FillColor) = 0;
virtual void DrawFilledRoundedRectangle(HXRect Rect, HXColor Color, HXColor FillColor, HXGInt Radius) = 0;
virtual void DrawFilledPolygon(std::vector<HXPoint> Points, HXColor Color, HXColor FillColor) = 0;
virtual void DrawRectangle(HXRect Rect, HXColor Color) = 0;
virtual void DrawPainter(HXBufferPainter *Painter, HXPoint Where) = 0;
virtual void DrawPainter(HXBufferPainter *Painter, HXPoint Where, HXPoint Origin, HXPoint Size) = 0;
virtual void DrawText(const HXString &Text, HXFont Font, HXPoint Where, HXColor Color, HXGUInt Height) = 0;
virtual void DrawImage(void *Buffer, HXPoint Where, HXPoint Size) = 0;
virtual HXPoint MeasureImage(void *Buffer) = 0;
virtual void Clear(HXColor Color) = 0;
virtual HXRect MeasureText(const HXString &Text, HXFont Font, HXGUInt Height) = 0;
virtual HXRect MeasureText(const HXChar &Text, HXFont Font, HXGUInt Height) = 0;
public:
virtual void Begin() = 0;
virtual void End() = 0;
public:
virtual HXBufferPainter *CreateSubPainter(HXGInt Width, HXGInt Height) = 0;
virtual HXBufferPainter *CreateFromBuffer(void *Buffer) = 0;
};
HXBufferPainter
对象是被标记为 HX_IMPL_API
的实现对象(有关实现对象,请参考实现对象),因此 HXBufferPainter
无法直接被实例化,一般而言只能由 HiEasyX 相关 API 主动提供,而不能被用户主动创建。
建议参考颜色结构体有关内容。
方法
DrawLine
void DrawLine(HXPoint Point1, HXPoint Point2, HXColor Color);
该函数以指定颜色绘制直线。
参数 | 含义 | 默认取值 |
---|---|---|
Point1 | 第一个点的位置 | 无 |
Point2 | 第二个点的位置 | 无 |
Color | 直线的颜色 | 无 |
参数 Point1
和 Point2
无先后顺序。
DrawLineStyled
void DrawLineStyled(HXPoint Point1, HXPoint Point2, HXColor Color, HXLineStyle Style);
该函数绘制指定样式以及颜色的直线。
参数 | 含义 | 默认取值 |
---|---|---|
Point1 | 第一个点的位置 | 无 |
Point2 | 第二个点的位置 | 无 |
Color | 直线的颜色 | 无 |
Style | 直线的样式 | 无 |
有关线条样式,请参考线条样式对象。
DrawFilledRectangle
void DrawFilledRectangle(HXRect Rect, HXColor Color, HXColor FillColor);
该函数绘制指定颜色的带边框填充矩形。
参数 | 含义 | 默认取值 |
---|---|---|
Rect | 矩形的位置 | 无 |
Color | 边框的颜色 | 无 |
Style | 填充的颜色 | 无 |
DrawFilledRoundedRectangle
void DrawFilledRoundedRectangle(HXRect Rect, HXColor Color, HXColor FillColor, HXGInt Radius);
该函数绘制指定颜色的带边框填充圆角矩形。
参数 | 含义 | 默认取值 |
---|---|---|
Rect | 矩形的位置 | 无 |
Color | 边框的颜色 | 无 |
Style | 填充的颜色 | 无 |
Radius | 圆角矩形的圆角半径 | 无 |
DrawFilledPolygon
void DrawFilledPolygon(std::vector<HXPoint> Points, HXColor Color, HXColor FillColor);
该函数绘制指定颜色的带边框填充多边形。
参数 | 含义 | 默认取值 |
---|---|---|
Points | 多边形的点集合,该函数会自动链接终点和起点 | 无 |
Color | 边框的颜色 | 无 |
Style | 填充的颜色 | 无 |
DrawRectangle
void DrawRectangle(HXRect Rect, HXColor Color);
该函数绘制指定颜色的矩形框。
参数 | 含义 | 默认取值 |
---|---|---|
Points | 多边形的点集合,该函数会自动链接终点和起点 | 无 |
Color | 边框的颜色 | 无 |
DrawPainter
DrawPainter(HXBufferPainter *Painter, HXPoint Where);
该函数绘制其他 HXBufferPainter
对象到指定位置。
参数 | 含义 | 默认取值 |
---|---|---|
Painter | 将要被绘制的 HXBufferPainter 对象 | 无 |
Where | 将要在何处绘制该 HXBufferPainter 对象 | 无 |
DrawPainter
void DrawPainter(HXBufferPainter *Painter, HXPoint Where, HXPoint Origin, HXPoint Size);
该函数绘制其他 HXBufferPainter
对象到指定位置并指定裁剪区域。
参数 | 含义 | 默认取值 |
---|---|---|
Painter | 将要被绘制的 HXBufferPainter 对象 | 无 |
Where | 将要在何处绘制该 HXBufferPainter 对象 | 无 |
Origin | 裁剪的原点,相对于被绘制的 HXBufferPainter 对象 | 无 |
Size | 裁剪框的大小,相对于被绘制的 HXBufferPainter 对象 | 无 |
DrawText
void DrawText(const HXString &Text, HXFont Font, HXPoint Where, HXColor Color, HXGUInt Height);
该函数绘制指定样式的文字在指定位置。
参数 | 含义 | 默认取值 |
---|---|---|
Text | 将要被绘制的文字 | 无 |
Font | 绘制的文字的样式 | 无 |
Where | 绘制文字的位置 | 无 |
Color | 绘制文字的颜色 | 无 |
Height | 绘制文字的大小 | 无 |
有关文字演示,请参考字体样式对象。
DrawImage
void DrawImage(void *Buffer, HXPoint Where, HXPoint Size);
该函数绘制图片并可指定位置和大小。
参数 | 含义 | 默认取值 |
---|---|---|
Buffer | 图片的缓冲区指针,在 EasyX 中可直接提供 IMAGE* 指针,或调用 HX::GetHXBuffer 函数得到 IMAGE 对象的缓冲区指针 | 无 |
Where | 绘制图片的位置 | 无 |
Size | 图片缩放大小 | 无 |
MeasureImage
HXPoint MeasureImage(void *Buffer);
该函数可测量图片的大小。
参数 | 含义 | 默认取值 |
---|---|---|
Buffer | 图片的缓冲区指针,在 EasyX 中可直接提供 IMAGE* 指针,或调用 HX::GetHXBuffer 函数得到 IMAGE 对象的缓冲区指针 | 无 |
返回值
以 HXPoint
结构体返回,X
分量为图片的宽、Y
分量为图片的高。
Clear
void Clear(HXColor Color);
该函数以指定颜色清空绘图对象。
参数 | 含义 | 默认取值 |
---|---|---|
Color | 清空颜色 | 无 |
MeasureText
HXRect MeasureText(const HXString &Text, HXFont Font, HXGUInt Height);
该函数可测量指定样式的文字的大小。
参数 | 含义 | 默认取值 |
---|---|---|
Text | 待测的文字 | 无 |
Font | 待测的文字样式 | 无 |
Height | 待测的文字大小 | 无 |
返回值
以 HXPoint
结构体返回,X
分量为文字的宽、Y
分量为文字的高。
MeasureText
HXRect MeasureText(const HXChar &Text, HXFont Font, HXGUInt Height);
该函数可测量指定样式的单个字符的大小。
参数 | 含义 | 默认取值 |
---|---|---|
Text | 待测的字符 | 无 |
Font | 待测的字符样式 | 无 |
Height | 待测的字符大小 | 无 |
返回值
以 HXPoint
结构体返回,X
分量为字符的宽、Y
分量为字符的高。
Begin
void Begin();
启用该 HXBufferPainter
对象的绘图模式。
请确保当前 HXBufferPainter
已启用了绘图模式再进行绘图操作,否则会导致未知的错误结果!
End
void End();
关闭该 HXBufferPainter
对象的绘图模式。
请确保当前 HXBufferPainter
对象在启用了绘图模式后能够及时关闭,否则会导致未知的错误结果!
CreateSubPainter
HXBufferPainter *CreateSubPainter(HXGInt Width, HXGInt Height);
该函数创建一个隶属于当前 HXBufferPainter
的新 HXBufferPainter
对象,生命周期由用户自行管理。
请确保新创建的 HXBufferPainter
对象被及时释放,否则会导致内存泄漏!
CreateFromBuffer
HXBufferPainter *CreateFromBuffer(void *Buffer);
保留函数,用户请勿调用。
该保留函数,仅供 API 内部调用,用户请勿调用!