zoukankan      html  css  js  c++  java
  • 设备描述表。

    通常在调用GetDC和BeginPaint时,系统用设备描述表的默认属性创建一个DC,使用设置设备描述表后,不会保存属性,下次还得重新设置。如果要保存,需要设置窗口属性为:CS_OWNDC,这样只需要设置一次设备描述表属性就可以了。当然,这个只针对GetDC和BeginPaint返回的DC。

    设备描述表的属性(具体属性值,查看MFC文档):

    virtual int SetMapMode(int nMapMode);

    说明:
    设置映射模式,映射模式定义了将逻辑单位转换为设备单位的单位量,并定义了X和Y的方向。GDI使用映射模式将逻辑坐标转换为适当的设备坐标。MM_TEXT允许应用使用设备像素,1逻辑单位等于1像素。像素的物理尺寸随设备而异。MM_HIENGLISH,MM_HIMETRIC,MM_LOENGLISH,MM_LOMETRIC和MM_ TWIPS模式对于必须使用具有物理意义单位作图的应用是很有用的(如使用英寸或毫米)。MM_ISOTROPIC 模式保证了1:1的方向比率,可以保存图象的精确形状。MM_ANISOTROPIC模式允许X和Y轴可以独立调用。

    virtual COLORREF SetBkColor(COLORREF crColor);

    说明:
    把当前背景色设置为指定的颜色。如果背景模式是OPAQUE(不透明),系统使用背景色填充行间和字符单元的背景。当位图在彩色和黑白设备上下文间转换时,系统使用背景色。如果设备不能显示指定颜色,系统将背景色设成与之最相近的物理色。

    int SetBkMode(int nBkMode );

    说明:
    设置背景模式。背景模式决定了在绘制文本、阴影画刷、带风格的直线时是否将绘图表面上已存在的背景色覆盖。

    virtual COLORREF SetTextColor(COLORREF crColor );

    说明:
    将指定颜色用于文本。当向设备上下文写入文本以及在彩色与黑白设备上下文间转换位图时,系统使用文本颜色。如果设备不能显示指定色,系统将设定与之最接近的文本颜色。字符的背景色是由SetBkColor和SetBkMode成员函数指定的。

    UNIT SetTextAlign(UNIT nFlags);
    说明:
    设置文本对齐方式。当输出显示或输出到设备时,TextOut和ExtTextOut成员函数使用这些标记来确定文本位置。标记表明了指定点与文本外接矩形之间的关系。该点坐标作为参数传递给TextOut成员函数,外接矩形由文本字符串的邻接字符单元形式。

    int SetROP2(int nDrawMode);
    说明:
    设置绘图模式。绘图模式指出笔与被填充对象的颜色是怎样同显示表面的颜色组合的。绘图模式只用于光栅设备,不用于矢量设备。绘图模式是双重的光栅操作代码,代表了两个变量所有可能的布尔组合,分别使用AND、OR、XOR(异或)和NOT运算符。

    int SetStretchBltMode(int nStretchMode);
    说明:
    为StretchBlt成员函数设置位图扩展模式。模式定义了利用该函数压缩的信息是如何从位图中清除的。BLACKONWHITE(STRETCH_ANDSCANS) 和WHITEONBLACK(STRETCH_ ORSCANS)模式一般用来在黑白位图中保存前景像素。COLORONCOLOR (STRETCH_DELETESCANS)模式用于保存彩色位图中的颜色。HALFTONE模式比其它模式需要对源图象作更多的处理,速度比其它模式慢,但质量更高。还要注意,HALFTONE必须在设置了SetBrushOrgEx之后调用,以避免画刷对齐错误。还可获得其它的扩展模式,取决于设备驱动程序的能力。

    int SetPolyFillMode(int nPolyFillMode);
    说明:
    设置多边形填充模式。当多边形填充模式为ALTERNATE时,系统对每条扫描线上的多边形奇数边和偶数边之间的区域进行填充,即系统在第一条和第二条边之间、第三条和第四条之间的区域内填充,依此类推。这是缺省模式。当多边形填充模式为WINDING时,系统利用图形绘制的方向来决定是否填充多边形。多边形中线段方向只有顺时针和逆时针两种。当一条从闭合域开始到图形外部的虚拟直线沿顺时针线段移动时,计数增加。当直线沿逆时针线段移动时,计数减小。如果计数值非零,该区域被填充。

    int SetTextCharacterExtra(int nCharExtra);
    说明:
    设置字符间距。当向设备上下文写入文本时,GDI把该间距加在每个字符之上,包括中断符。缺省字符间距值是0。

    CPoint SetBrushOrg(int x ,int y );
    CPoint SetBrushOrg(POINT point);
    说明:
    指定GDI将要为下一个画刷分配初始位置。应用把该画刷选入设备上下文中。缺省的画刷初始位置是(0,0)。要改变画刷的初始位置,为CBrush对象调用UnrealizeObject函数。调用SetBrushOrg,再调用SelectObject成员函数就可以将画刷选入设备上下文中。不要对库存CBrush对象使用SetBrushOrg 。

    CPen* SelectObject (CPen* pPen);
    CBrush* SelectObject(CBrush* pBrush);
    virtual CFont* SelectObject(CFont* pFont);
    CBitmap* SelectObject(CBitmap* pBitmap);
    int SelectObject (CRgn* pRgn);

    说明:
    将对象选入设备上下文中。CDC类为特定类型的GDI对象提供了五种形式,包括画笔、画刷、字体、位图和区域。最新选中的对象将覆盖同类型的前一个对象。例如,如果SelectObject中通用形式的pObject指向CPen对象,函数将用pObject指定的画笔作为当前画笔。应用只能将位图选入内存设备上下文中,且一次只能放入一个内存设备上下文。位图格式必须为黑白模式或与设备上下文兼容,否则SelectObject返回错误。对Windows 3.1及其以后版本,不论是否在元文件中使用,SelectObject返回相同的值。对于早期版本,SelectObject在元文件使用返回值时,如果成功,则返回非零值;失败则返回0。

    ==========================

    CPoint SetWindowOrg(int x ,int y );
    CPoint SetWindowOrg(POINT point )

    说明:
    设置设备上下文的窗口初始位置。它和设备上下文窗口一起说明了GDI如何将逻辑坐标中的点映射到实际设备坐标中。换言之,它们说明了GDI如何将逻辑坐标转换为设备坐标。窗口初始位置表明在设备坐标系统中的点,GDI将视图端口初始位置与该点映射。窗口初始位置是由SetWindowOrg成员函数在逻辑坐标系统中指定的。GDI在映射其它点时遵从同样的过程,这需要窗口初始位置与视图端口初始位置的映射。例如,所有以窗口初始位置为中心的圆周上的点同样是以视图端口初始位置为中心的圆周上的点。同样地,通过窗口初始位置的直线上的所有点也将形成一条通过视图端口初始位置的直线。

    virtual CSize SetWindowExt(int cx ,int cy);
    virtual CSize SetWindowExt(SIZE size);

    说明:
    设置窗口扩展的X和Y扩展。窗口和设备上下文窗口说明了GDI如何将逻辑坐标中的点映射到实际设备坐标中。
    换言之,它们说明了GDI如何将逻辑坐标转换为设备坐标。


    virtual CSize SetViewportExt(int cx ,int cy);
    virtual CSize SetViewportExt(SIZE size);

    说明:
    设置视图端口扩展的X和Y扩展。视图端口和设备上下文窗口说明了GDI如何将逻辑坐标中的点映射到实际设备坐标中。换言之,它们说明了GDI如何将逻辑坐标转换为设备坐标。当设置以下映射模式时,对SetWindowExt和SetViewportExt的调用将被覆盖。

    virtual CPoint SetViewportOrg(int x ,int y );
    virtual CPoint SetViewportOrg (POINT point );

    说明:
    设置设备上下文的视图端口初始位置。视图端口和设备上下文窗口说明了GDI如何将逻辑坐标中的点映射到实际设备坐标中。换言之,它们说明了GDI如何将逻辑坐标转换为设备坐标。视图端口初始位置表明在设备坐标系统中的点,GDI将窗口初始位置与该点映射。窗口初始位置是由SetWindowOrg成员函数在逻辑坐标系统中指定的。GDI在映射其它点时遵从同样的过程,这需要窗口初始位置与视图端口初始位置的映射。例如,所有以窗口初始位置为中心的圆周上的点同样是以视图端口初始位置为中心的圆周上的点。同样地,通过窗口初始位置的直线上的所有点也将形成一条通过视图端口初始位置的直线。

  • 相关阅读:
    commonjs
    基于webpack的vue开发环境搭建
    vs工程配置eslint检测环境
    h5笔记
    NPM install -save 和 -save-dev 区别
    小的div在大的div中垂直居中
    css position absolute相对于父元素的设置方式
    Python的支持工具[0] -> 环境包管理工具[1] -> Anaconda
    Python的支持工具[0] -> 环境包管理工具[0] -> pip
    代码编辑器[0] -> Vim/gVim[2] -> Vim 的相关知识
  • 原文地址:https://www.cnblogs.com/aoyihuashao/p/1711651.html
Copyright © 2011-2022 走看看