TextOut
TextOut
该函数显示自定义数组中的文本(缓冲区)并返回该操作结果。数组是专为创建图形资源而设计的。
bool TextOut(
const string text, // 显示的文本
int x, // X 坐标
int y, // Y 坐标
uint anchor, // 定位类型
uint &data[], // 输出缓冲区
uint width, // 缓冲区像素宽度
uint height, // 缓冲区像素高度
uint color, // 文本颜色
ENUM_COLOR_FORMAT color_format // 输出的颜色格式
);参数
- text
[in] 将被写入缓冲区的文本显示。只显示单行文本。
- x
[in] 显示文本的定位点的 X 坐标。
- y
[in] 显示文本的定位点的 Y 坐标。
- anchor
[in] 显示文本定位点位置的9种预定义方法的值。该值通过结合两种标识设置 - 水平和垂直文本对齐标识。标识名称列在附注。
- data[]
[in] 缓冲区,文本在这里显示。缓冲区被用于创建图形资源。
- width
[in] 缓冲区像素宽度。
- height
[in] 缓冲区像素高度。.
- color
[in] 文本颜色。
- color_format
[in] 通过ENUM_COLOR_FORMAT 枚举值设置的颜色格式。
返回值
如果成功,返回 true ,否则 false。
注意
通过anchor指定的定位点是水平文本对齐和垂直文本对齐两个标识的组合。水平文本对齐标识:
- TA_LEFT 边框左侧定位点
- TA_CENTER 边框中心的水平定位点
- TA_RIGHT 边框右侧定位点
垂直文本对齐标识
- TA_TOP 边框上方定位点
- TA_VCENTER 边框中心的垂直定位点
- TA_BOTTOM 边框下方定位点
图片中显示了标识和指定定位点可能的组合。

例如:
//--- 画布的宽和高(用于绘制)
#define IMG_WIDTH 200
#define IMG_HEIGHT 200
//--- 启动脚本前显示参数窗口
#property script_show_inputs
//--- 启用设置颜色格式
input ENUM_COLOR_FORMAT clr_format=COLOR_FORMAT_XRGB_NOALPHA;
//--- 绘制数组(缓冲区)
uint ExtImg[IMG_WIDTH*IMG_HEIGHT];
//+------------------------------------------------------------------+
//| 脚本程序起始函数 |
//+------------------------------------------------------------------+
void OnStart()
{
//--- 创建用于绘制的OBJ_BITMAP_LABEL物件
ObjectCreate(0,"CLOCK",OBJ_BITMAP_LABEL,0,0,0);
//--- 指定用于在CLOCK物件编写的图形资源的名称
ObjectSetString(0,"CLOCK",OBJPROP_BMPFILE,"::IMG");
//--- 辅助变量
double a; // 箭头计数器
uint nm=2700; // 分钟计数器
uint nh=2700*12; // 小时计数器
uint w,h; // 接收文本字符串大小的变量
int x,y; // 计算文本字符串定位点当前坐标的变量
//--- 无限循环旋转时针,直至脚本停止
while(!IsStopped())
{
//--- 清空绘制缓冲区数组的时钟
ArrayFill(ExtImg,0,IMG_WIDTH*IMG_HEIGHT,0);
//--- 为钟面设置绘制数字的字体
TextSetFont("Arial",-200,FW_EXTRABOLD,0);
//--- 绘制钟面
for(int i=1;i<=12;i++)
{
//--- 接收钟面上当前小时的大小
TextGetSize(string(i),w,h);
//--- 计算钟面上当前小时的坐标
a=-((i*300)%3600*M_PI)/1800.0;
x=IMG_WIDTH/2-int(sin(a)*80+0.5+w/2);
y=IMG_HEIGHT/2-int(cos(a)*80+0.5+h/2);
//--- 输出钟面上的小时到ExtImg[]缓冲区
TextOut(string(i),x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
}
//--- 现在,指定绘制分针的字体
TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nm%3600));
//--- 接收分针的大小
TextGetSize("----->",w,h);
//--- 计算钟面上分针的坐标
a=-(nm%3600*M_PI)/1800.0;
x=IMG_WIDTH/2-int(sin(a)*h/2+0.5);
y=IMG_HEIGHT/2-int(cos(a)*h/2+0.5);
//--- 在ExtImg[]缓冲区输出分针到钟面
TextOut("----->",x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
//--- 现在,设置绘制分针的字体
TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nh/12%3600));
TextGetSize("==>",w,h);
//--- 计算钟面上时针的坐标
a=-(nh/12%3600*M_PI)/1800.0;
x=IMG_WIDTH/2-int(sin(a)*h/2+0.5);
y=IMG_HEIGHT/2-int(cos(a)*h/2+0.5);
//--- 在ExtImg[]缓冲区输出时针到钟面
TextOut("==>",x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
//--- 更新图形资源
ResourceCreate("::IMG",ExtImg,IMG_WIDTH,IMG_HEIGHT,0,0,IMG_WIDTH,clr_format);
//--- 强制图表更新
ChartRedraw();
//--- 增加小时和分钟计数器
nm+=60;
nh+=60;
//--- 框架之间保持短暂停顿
Sleep(10);
}
//--- 完成脚本操作时删除 CLOCK 物件
ObjectDelete(0,"CLOCK");
//---
}另见
资源, ResourceCreate(), ResourceSave(), TextGetSize(), TextSetFont()