标题中年人学C语言Windows程序设计,9 窗口绘画:直线
MoveToEx函数
函数功能:
MoveToEx 函数将当前绘图位置移动到某个具体的点,同时也可获得之前位置的坐标。
API 函数原型:
注释:In 说明该参数是输入的,opt 说明该参数是可选参数。
BOOL MoveToEx(
_In_ HDC hdc,
_In_ int X,
_In_ int Y,
_Out_ LPPOINT lpPoint
);
参数解析:
参数 | 含义 |
---|---|
hdc | 指定设备环境句柄 |
X | 指定新位置的 X 轴坐标,按逻辑单位表示坐标 |
Y | 指定新位置的 Y 轴坐标,按逻辑单位表示坐标 |
lpPoint | 1. 一个 POINT 结构的指针,用于获得之前位置的坐标 |
2. 如果这个值是 NULL,则不会获得之前位置的坐标 |
参数 含义
hdc 指定设备环境句柄
X 指定新位置的 X 轴坐标,按逻辑单位表示坐标
Y 指定新位置的 Y 轴坐标,按逻辑单位表示坐标
lpPoint 1. 一个 POINT 结构的指针,用于获得之前位置的坐标
2. 如果这个值是 NULL,则不会获得之前位置的坐标
返回值:
-
如果函数调用成功,返回值是非 0;
-
如果函数调用失败,返回值是 0。
备注:
-
MoveExTo 函数将影响所有的绘图函数。
-
在默认的设备环境中,点 (0, 0) 为最初设定的当前位置。
【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。
LineTo函数
函数功能:
LineTo 函数使用当前画笔绘制一条线,线段从当前位置连到一个指定的点 (x, y)。
当这个函数调用完毕后,当前位置变成 (x, y)。
小甲鱼提示:所绘制的线段并不包含指定的点 (x, y)。
API 函数原型:
注释:In 说明该参数是输入的,opt 说明该参数是可选参数。
BOOL LineTo(
_In_ HDC hdc,
_In_ int nXEnd,
_In_ int nYEnd
);
参数解析:
参数 含义
hdc 指定设备环境句柄
nXEnd 1. 线段终点X坐标位置,采用逻辑坐标表示。
2. 这个点不会实际画出来,因为它不属于线段的一部份
nYEnd 1. 线段终点Y坐标位置,采用逻辑坐标表示。
2. 这个点不会实际画出来,因为它不属于线段的一部份
返回值:
-
如果函数调用成功,返回值是非 0;
-
如果函数调用失败,返回值是 0。
代码实例1
画两条直线
case WM_PAINT://窗口绘画:点
{
//int x, xLast;
HDC hdc = BeginPaint(hWnd, &ps);//函数为指定窗口进行绘画作准备,并用将和绘画有关的信息填充到一个 PAINTSTRUCT 结构中。
MoveToEx(hdc, 10, 20, NULL);//MoveToEx 函数将当前绘图位置移动到某个具体的点,同时也可获得之前位置的坐标。
LineTo(hdc, 100, 200);//LineTo 函数使用当前画笔绘制一条线,线段从当前位置连到一个指定的点 (x, y)。
LineTo(hdc, 300, 100);
EndPaint(hWnd, &ps);
return 0;
}
代码实例2
画个 网格,网格间距50个像素
case WM_PAINT://窗口绘画:点
{
//int x, xLast;
HDC hdc = BeginPaint(hWnd, &ps);//函数为指定窗口进行绘画作准备,并用将和绘画有关的信息填充到一个 PAINTSTRUCT 结构中。
//MoveToEx(hdc, 10, 20, NULL);//MoveToEx 函数将当前绘图位置移动到某个具体的点,同时也可获得之前位置的坐标。
//LineTo(hdc, 100, 200);//LineTo 函数使用当前画笔绘制一条线,线段从当前位置连到一个指定的点 (x, y)。
//LineTo(hdc, 300, 100);
GetClientRect(hWnd, &rect);//获取客户区信息. 函数用于获取窗口客户区的坐标,客户区坐标指定客户区的左上角和右下角。
//画横线网格
int y;
for (y = 0; y < rect.bottom; y += 50)
{
MoveToEx(hdc, 0, y, NULL);
LineTo(hdc, rect.right, y);
}
//画竖线网格
int x;
for (x= 0; x < rect.right; x += 50)
{
MoveToEx(hdc, x, 0, NULL);
LineTo(hdc, x, rect.bottom);
}
EndPaint(hWnd, &ps);
return 0;
}