跳到主要内容

绘图对象

在 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直线的颜色
信息

参数 Point1Point2 无先后顺序。


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 内部调用,用户请勿调用!