• Windows程序设计笔记(4)


    设备描述表
    1.在WM_PAINT消息时
    PAINTSTRUCT ps;
    HDC hdc = BeginPaint(hwnd,&ps);
    EndPaint(hwnd,&ps);

    PAINTSTRUCT中包含一个rcPaint的矩形结构,定义为包含窗口客户区的无效范围矩形
    2.非WM_PAINT消息时
    2.1
    hdc=GetDC(hwnd);    //整个绘图区的句柄
    ReleaseDC(hwnd,hdc);
    不使客户区任何可能的无效区域变为有效  (不刷新窗口显示?)
    2.2适用于整个窗口,而非客户区,必须捕获WM_NCPAINT消息
    hdc=GetWindowDC(hwnd);
    ReleaseDC(hwnd,hdc);

    3.获取整个屏幕的设备描述表
    以上2种方式获得的句柄都和某个窗口有关,而想获取整个屏幕的设备描述句柄则应使用
    hdc = CreateDC(pszDriver,pszDevice,pszOutput,pData);
    DeleteDC(hdc);

    4.内存设备描述表
    hdcmem = CreateCompatibleDC(hdc);
    DeleteDC(hdcmem);

    5.元文件设备描述表
    hdcMeta = CreateMetaFile(pszfilename);
    hmf = CloseMetaFile(hdcMeta);

    获取设备描述表信息
    GetDeviceCaps(hdc, index);

    水平/垂直大小(mm) = 25.4 * 水平/垂直分辨率(像素) / 逻辑像素X/Y(每英寸的点数)
    25.4用于将英寸转为mm


    6种GDI对象:
    画笔,刷子,位图,区域,字体,调色板. 这些对象都是通过SelectObject选进设备描述表的.在使用时应遵守以下三条原则:
    1.最后要删除自己创建的所有GDI对象
    2.当GDI对象正在一个有效的设备描述表中时,不要删除它
    3.不要删除现有对象

    背景模式OPAQUE,TRANSPARENT(忽略背景色,且不填充空隙)

    逻辑坐标和设备坐标
    ClientToScreen()  ScreenToClient() 客户区坐标与屏幕坐标的转换
    GetWindowRect获取屏幕坐标下的整个窗口的位置和大小

    Viewport和Windowport
    GetClientRect()获取客户区大小  
    DPToLP() 设备点转逻辑点
    LPToDP() 逻辑点转设备点

    注:在改变viewport或者windowport后并不能立即刷新显示输出,而必须在改变原点之后刷新输出



  • 相关阅读:
    当Android端,访问WEB service 时,同样的增删改,如果我在一个函数中,实现三个业务(同一函数三个业务是相对独立的,没有交集),和用三个函数实现三个业务,哪一个比较好
    study1
    .net软件工程师面试总结(1)
    pandas 读取文件常见错误
    贝叶斯检查器
    python读取文件异常处理
    knn算法 数字文字图片识别
    饼图简单绘制
    Python自动采集数据简单操作
    数据异常值分析和处理
  • 原文地址:https://www.cnblogs.com/neking/p/2534698.html
Copyright © 2020-2023  润新知