学习windows编程 day4 之 映射模式

本文介绍了在Windows绘图程序中如何使用不同的映射模式来改变坐标系的方向及单位,通过具体代码示例展示了如何设置和切换映射模式,并解释了不同模式下绘制效果的变化。
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    RECT rect;
    int iOldMap;
    switch (message)
    {
    case WM_PAINT:
        hdc = BeginPaint(hwnd, &ps);
        GetClientRect(hwnd, &rect);
//映射模式:改变xy轴方向,长度度量单位
        //默认MM_TEXT x向右  y向下 单位px
        TextOut(hdc, 100, 100, L"MM_TEXT", 7);

        iOldMap=GetMapMode(hdc);

//改变映射模式 setmapmode
        //MM_LOMETRIC    x向右 y向上 单位0.1mm
        //MM_HIMETRIC     x向右 y向上 单位0.01mm
        //MM_LOENGLISH   x向右 y向上 单位0.01in
        //MM_HIENGLISH   x向右 y向上 单位0.001in
        //MM_TWIPS         x向右 y向上 单位1/1440in    1/20个打印点    少
        //MM_ISOTROPIC   x向右 y向上 任意x=y    可选    各向同性
        //MM_ANISOTROPIC x向右 y向上 任意x!=y    可选    各向异性

        //MM_LOMETRIC x向右 y向上 单位0.1mm
        SetMapMode(hdc, MM_LOMETRIC);
        TextOut(hdc, 1000, -1000, L"MM_LOMETRIC", 11);//10cm

        //MM_HIMETRIC     x向右 y向上 单位0.01mm
        SetMapMode(hdc, MM_HIENGLISH);
        TextOut(hdc, 1000, -1000, L"MM_HIMETRIC", 11);//1cm

        //恢复默认模式
        SetMapMode(iOldMap);
        EndPaint(hwnd, &ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }


    return DefWindowProc(hwnd, message, wParam, lParam);
}

1. 注意无论映射模式是哪一种:所获得的信息都是以像素为单位的

2.客户区设备坐标是指客户区左上角,全窗口坐标是指窗口左上角(包括标题栏等getwindowsdc获取)

转载于:https://www.cnblogs.com/ssyfj/p/8511131.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值