zoukankan      html  css  js  c++  java
  • GDI 摘要 自《windows 编程》

    ---------------------------------------------------------------------------
    1.
    windows给程序发送消息,即,操作系统调用应用程序的“窗口消息处理程序”
    2.
    窗口是在窗口类别的基础上建立的。窗口类别标识处理窗口消息的“窗口消息处理程序”
    3.
    对象=数据+方法
    窗口=窗口数据&窗口类别数据&消息数据&消息处理数据 +“窗口消息处理程序”
    4.
    程序执行后,windows就为其建立一个“消息队列”用来保存消息。
    5.
    程序中会有一段代码专门用来从“消息队列”中取出消息,并转发给相应的“窗口消息处理程序”
    6.
    有些消息会直接发送给“窗口消息处理程序”而不经过消息队列!!
    7.
    MSG结构的message字段为WM_QUIT时,GetMessgae()返回0
    8.
    当窗口显示区的部分或全部变为“无效”,由WM_PAINT通知程序更新画面
    9.
    Windows内部为每个窗口保存一个「绘图信息结构」,这个结构包含了包围无效区域的最小矩形的
    坐标以及其它信息,这个矩形就叫做「无效矩形」,有时也称为「无效区域」。
    10.
    窗口消息处理程序可以通过调用InvalidateRect使显示区域内的矩形无效。
    ..InvalidateRect,消息队列中若有WM_PAINT会修改其有效区域,若无,会新增WM_PAINT
    ..ValidateRect..有效。会让目前消息队列中的所有WM_PAINT都被删除。
    通过调用GetUpdateRect,可以在任何时候取得无效区域的坐标。
    11.
    除了CreateDC产生的hdc外,程序不能在两个消息之间保存其他hdc
    12.
    Windows有许多坐标映射方式,默认是MM_TEXT。即左上开始右下结束的像素值。
    13.
    GetSystemMetrics SM_CXSCREEN SM_CYSCREEN
    GetTextMetrics
    14.
    hdc=BeginPaint(hwnd,&ps),获取更新区域的DC
    GetDC(hwnd),获取显示区域的DC
    GetWindowDC(hwnd),获取含标题栏等的DC,在标题栏等上绘制需要拦截WM_NCPAINT
    15.
    hdc = CreateDC(pszDriver, pszDevice, pszOutput, pData)
    // 获取整个屏幕的设备内容句柄的2种方法
    hdc = CreateDC (TEXT ("DISPLAY"), NULL, NULL, NULL) 
    hdc = GetDC(NULL);
    // 获取设备内容的信息但不能进行绘图
    hdc = CreateIC (TEXT ("DISPLAY"), NULL, NULL, NULL) ;
    // 获取内存设备内容
    hdcMem = CreateCompatibleDC (hdc) ; //建立与hdc兼容的dc
    DeleteDC (hdcMem) ;
    16.
    metafile,GDI命令的二进制形式
    17.
    GetSystemMetric(SM_CYSCREEN)
    GetSystemMetric(SM_CXSCREEN)
    18.
    iValue = GetDeviceCaps (hdc, iIndex) ;
    ---------------------------------------------------------------------------
    1.
    GDI的主要目的之一是支持与设备无关的图形。图形输出设备分为两大类:位映像设备和向量设备。
    2.
    Windows内定使用图素坐标系统。
    大多数传统图形语言使用“虚拟”坐标系,水平和垂直轴的范围在0~32767;
    GDI允许使用两种系统任一,甚至依据实际度量衡的坐标系;
    3.
    GDI是静态的显示系统,如果需要为游戏编写复杂的动画,就应该研究DirectX。(??)
    4.
    GDI函数按功能分为5大类:
    1)获取和释放设备上下文的;
    2)获取设备上下文的信息(比如目前的文字尺寸)的(确定GDI函数如何在设备上工作);
    3)绘制函数(显示文字,画线,填充等);
    4)获取和设置设备上下文的绘制参数(这些参数规定了绘制函数的绘制细节,例如文字色彩);
    5)使用GDI对象的函数。(类似加强版的绘制参数,外部定义的一个数据结构,设备上下文通
      过该数据结构的句柄来使用它。)
    5.
    GDI基本图形有4类:
    1)直线和曲线(直线,矩形,椭圆,弧,贝塞尔曲线,折线);
    2)填入区域(画刷可以是实心,图案);
    3)位图(设备相关DDB和设备无关DIB);
    4)文字;
    6.
    GDI的其他部分:
    1)映像模式和变换;
    2)Metafile;
    3)绘制区域(任意形状的复杂区域);
    4)路径(GDI内部存储的直线和曲线的集合);
    5)剪裁(限制在显示区域内的某一部分,剪裁区域通过区域或路径来定义);
    6)调色盘;
    7)打印;
    7.
    在大多数GDI函数中,使用COLORREF值(只是一个32位的无正负号长整数)来表示一种色彩。
    这个无正负号长整数常常称为一个「RGB色彩」。
    WINGDI.H提供了几种使用RGB色彩值的宏。
    #define RGB(r,g,b) ((COLORREF)(((BYTE)(r) | \
    ((WORD)((BYTE)(g)) << 8)) | \
    (((DWORD)(BYTE)(b)) << 16)))
    GetRValue、GetGValue和GetBValue宏从COLORREF值中抽取出原色值。
    8.
    SetPixel和GetPixel
    SetPixel (hdc, x, y, crColor) ;
    crColor = GetPixel (hdc, x, y) ;
  • 相关阅读:
    杨辉三角实现
    三种方式都能生成同样的列表
    Python 直接赋值、浅拷贝和深度拷贝解析
    Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
    教你玩转CSS 分组选择器和嵌套选择器
    教你玩转CSS padding(填充)
    教你玩转CSS 轮廓(outline)属性
    教你玩转CSS margin(外边距)
    教你玩转CSS border(边框)
    教你玩转CSS表格(table)
  • 原文地址:https://www.cnblogs.com/mumuliang/p/2536443.html
Copyright © 2011-2022 走看看