中年人学C语言Windows程序设计,9 窗口绘图:直线的画法

标题中年人学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 轴坐标,按逻辑单位表示坐标
lpPoint1. 一个 POINT 结构的指针,用于获得之前位置的坐标
2. 如果这个值是 NULL,则不会获得之前位置的坐标

参数 含义
hdc 指定设备环境句柄
X 指定新位置的 X 轴坐标,按逻辑单位表示坐标
Y 指定新位置的 Y 轴坐标,按逻辑单位表示坐标
lpPoint 1. 一个 POINT 结构的指针,用于获得之前位置的坐标
2. 如果这个值是 NULL,则不会获得之前位置的坐标

返回值:

  1. 如果函数调用成功,返回值是非 0;

  2. 如果函数调用失败,返回值是 0。

备注

  1. MoveExTo 函数将影响所有的绘图函数。

  2. 在默认的设备环境中,点 (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. 这个点不会实际画出来,因为它不属于线段的一部份

返回值:

  1. 如果函数调用成功,返回值是非 0;

  2. 如果函数调用失败,返回值是 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;
        }

在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值