该函数通过单次调用实现双重绘图操作:使用当前选定的画笔绘制矩形边框,同时用当前选定的画刷填充矩形内部区域[1] [2] 。绘制范围由逻辑坐标系中的左上角和右下角坐标确定,实际绘制时右下角坐标对应的像素行和列不会被着色[1] 。
函数原型定义为:cppBOOL Rectangle( HDC hdc, int left, int top, int right, int bottom);
参数说明:
hdc:设备上下文句柄,指向图形绘制目标[1][2]
left:逻辑坐标系中矩形左上角X坐标[1]
top:逻辑坐标系中矩形左上角Y坐标[1]
right:逻辑坐标系中矩形右下角X坐标[1]
bottom:逻辑坐标系中矩形右下角Y坐标[1]
采用GDI逻辑坐标系进行定位计算,实际物理坐标转换由设备驱动处理。坐标系原点默认位于绘制表面左上角,X轴向右延伸,Y轴向下延伸。该机制保证在不同分辨率设备上保持一致的绘制比例[1] 。
当使用非空画笔(如PS_SOLID)时,边框线条宽度会影响实际绘制尺寸。特殊情况下若选用PS_NULL画笔,函数会自动将右下角坐标向矩形中心收缩一个逻辑单位,以避免产生可见边框。这种处理机制保证当画笔设置为不可见时,填充区域与预期尺寸严格一致[1] 。
依赖Gdi32.dll动态链接库实现核心绘制算法[1] [2] 。最低运行环境要求为Windows 2000专业版或Windows 2000服务器版[2] 。在Windows 10及后续版本中保持向下兼容,但建议使用Direct2D等新一代图形API进行新项目开发[1] 。
函数执行成功时返回非零值(TRUE),失败时返回零值(FALSE)。常见错误包括无效设备上下文句柄、坐标参数溢出或图形资源分配失败[1] [2] 。调用者应通过GetLastError函数获取详细错误代码[1] 。
与以下GDI函数构成图形绘制体系:
RoundRect:绘制带圆角的矩形,额外需要指定圆角曲率半径[1][2]
Ellipse:绘制椭圆图形,采用类似的坐标参数结构[1]
Polygon:绘制多边形轮廓,需要顶点数组作为输入[1]
FillRect:仅填充矩形区域而不绘制边框[1]