分享

设备环境(DC)(3) VC

 昵称3972135 2010-12-05
1.COLORREF SetDCBrushColor(HDC hdc, COLORREF crColor);
函数功能:该函数把当前设备上下文环境(DC)画笔颜色设置为指定颜色值。如果设备不能提供指定的颜色值,那么就把颜色设为最近的物理颜色。
  参数:
  hdc:设备上下文环境句柄。
  crColor:指定新的画笔颜色。
  返回值:如果成功,返回值指定先前设备上下文环境画笔颜色为COLORREF值;如果失败,返回CLR_INVALID。
  注释:当在 一个设备上下文环境中选择系统备用DC_BRUSH时,所有的以后绘制操作将使用设备上下文环境画笔颜色,直到系统备用画笔被取消选择为止,缺省DC_BRUSH颜色是WHITE。
  该函数将返回先前的DC_BRUSH颜色,即使在DC中没有选择系统备用画笔DC_BRUSH,但是,除非系统备用DC-BRUSH被选择,否则绘制操作将不使用它,设置颜色可参照设置笔和画笔颜色的例子。
  使用DC_BRUSH或DC_PEN参数的GetStockObject函数可以与SetDCPenColor和SetDCBrushColor函数互换。
  ICM:如果ICM可用就执行颜色管理。
 
2.COLORREF GetDCBrushColor(HDC hdc);
函数功能:该函数确认将要返回画笔颜色的设备上下文环境(DC)。
  参数:
  hdc:设备上下文环境的句柄,该设备上下文环境的画笔颜色将被返回。
  返回值:如果成功,返回值是当前Dc的画笔颜色的颜色引用;如果失败,返回值为CLR_INVALID。
  注释:GetDCBrushColor函数返回先前的DC_BRUSH颜色,即使系统备用对象DC_BRUSH没有选入设备上下文环境。有关设置设备上下文环境画笔颜色的更多信息,参见SetDCBrushColor。
  ICM:如果ICM可用就执行颜色管理。
 
3.COLORREF SetDCPenColor(HDC hdc, COLORREF crColor);
函数功能;该函数把当前设备上下文环境(DC)的笔颜色设置为指定颜色值。如果设备不能提供指定的颜色值,颜色就设为最近的物理颜色。
  参数:
  hdc:设备上下文环境的句柄。
  crColor:指定新笔颜色。
  返回值:如果成功,则返回值指定先前DC笔颜色为某个COLORREF值;如果失败,返回CLR_INVALID。
  注释:即使系统备用笔DC_PEN没有被选入DC,该函数仍将返回先前DC_PEN的颜色,但是在绘制操作中这将不被使用,直到系统备用DC_PEN被选入DC为止。
  设置颜色可以参见设置笔或画笔颜色的例子,使用DC_BRUSH或DC_PEN参数的GetStockObject函数可与SetDCPenColor和SetDCBrushColor函数交换使用。
  ICM:如果ICM可用就执行颜色管理。详情参见ForegroundldleProc钩子处理过程。
 
4.COLORREF GetDCPenColor(HDC hdc);
函数功能:该函数设置当前DC笔颜色为指定颜色,如果设备不能提供指定颜色值,将返回最近的物理颜色。
  参数:
  hdc:设备上下文环境的句柄,该设备上下文环境的笔颜色将被返回。
  返回值:如果成功,则返回先前DC笔颜色的颜色引用;如果失败,则返回CLR_INVALID。
  注释:即使存储对象DC_PEN设备被选入DC,GetDCPenColor函数也将返回先前DC_PEN颜色,更多信息参见Setting the pen或Brush Color和SetDCPenColor。
  ICM:如果ICM可用则执行颜色管理。
 
5.HGDIOBJ SelectObject(HDC hdc, HGDIOBJ hgdiobj);
  CPen* SelectObject( CPen* pPen );
  CBrush* SelectObject( CBrush* pBrush );
  virtual CFont* SelectObject( CFont* pFont );
  CBitmap* SelectObject( CBitmap* pBitmap );
  int SelectObject( CRgn* pRgn );
  CGdiObject* SelectObject( CGdiObject* pObject );
  函数功能:该函数选择一对象到指定的设备上下文环境中,该新对象替换先前的相同类型的对象。
  参数:
  hdc:设备上下文环境的句柄。
  hgdiobj:被选择的对象的句柄,该指定对象必须由如下的函数创建。
  位图:CreateBitmap, CreateBitmapIndirect, CreateCompatible Bitmap, CreateDIBitmap, CreateDIBsection(只有内存设备上下文环境可选择位图,并且在同一时刻只能一个设备上下文环境选择位图)。
  画刷:CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush。
  字体:CreateFont, CreateFontIndirect。
  笔:CreatePen, CreatePenIndirect。
  区域:CombineRgn, CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreateRectRgn, CreateRectRgnIndirect。
  返回值:如果选择对象不是区域并且函数执行成功,那么返回值是被取代的对象的句柄;如果选择对象是区域并且函数执行成功,返回如下一值;
  SIMPLEREGION:区域由单个矩形组成;COMPLEXREGION:区域由多个矩形组成。NULLREGION:区域为空。
  如果发生错误并且选择对象不是一个区域,那么返回值为NULL,否则返回GDI_ERROR。
  注释:该函数返回先前指定类型的选择对象,一个应用程序在它使用新对象进行绘制完成之后,应该用原始的缺省的对象替换新对象。
  应用程序不能同时选择一个位图到多个设备上下文环境中。
  ICM:如果被选择的对象是画笔或笔,那么就执行颜色管理。
 
6.HGDIOBJ GetCurrentObject(HDC hdc, UINT uObjectType);
函数功能:该函数得到一个从特定类型中选定目标的设备对象句柄。
  参数:
  hdc:设备上下文环境句柄。
  uObjectType:指定要查询的对象类型,该参数可取如下一值:
  OBJ_PEN:笔;OBJ_BRUSH:返回当前选择的画笔;OBJ_PAL:返回当前选择的调色板;
  OBJ_FONT:返回当前选择的字体;OBJ_BMAP:返回当前选择的位图。
  返回值:如果成功,返回指定对象的句柄;如果失败,则返回NULL。
  Windows NT:若想获得更多错误信息,请调用GetLastError函数。
  注释:应用程序可以使用GetCurrentObject和GetObject函数来检索对当前选入给定设备上下文环境的图形对象的描述。
  Windows CE:Windows CE1.0版不支持uObjectType参数的OBJ_PAL标志值,在WindowsCE2.0版中,该函数与在Windows桌面平台完全相同。
 
7.int GetObject(HGDIOBJ hgdiobj, int cbBuffer, LPVOID lpvObject);
函数功能:该函数得到指定图形对象的信息,根据图形对象,函数把填满的或结构,或表项(用于逻辑调色板)数目放入一个指定的缓冲区。
  参数:
  hgdiobj:指向感兴趣的图形对象的句柄,它可以是这样的一个句柄:一个逻辑位图、一个刷子、一种字体、一个调色板、笔或通过调用CreateDIBsection函数创建的与设备无关位图。
  cbBuffer:指定将要写到缓冲区的信息的字节数目。
  lpvObject:指向一个缓冲区的指针,该缓冲区将要检索指定图形对象的信息。
  下面列出的是缓冲区为每种图形对象类型可接收的信息和类型,可用hgdiobj来指定,写入*lpvObject: HBITMAP BITMAP。
  HBITMAP:如果cbBuffer被设置为sizeof(DIBSECTION)或sizeof(BITMAP),则从对CreatDIBSection函数的DIBSECTION调用中返回。
  HPALETTE:逻辑调色板入口数的WORD数目。
  HPEN:从对ExtCreatePen函数的LXTLOGPEN调用中返回。
  HPENLOGPEN; HBRUSH LOGBRUSH; HFONT LOGFONT
  如果lpvObject参数为Null,则函数返回值为指定图形对象需要把信息贮存到缓冲区的字节数目。
  返回值:如果函数调用成功,且lpvObject为一个有效指针,则返回值为贮存到缓冲区的字节数目;如果函数调用成功,且lprObject为Null,则返回值为需要容纳的贮存到缓冲区的信息字节数目;如果函数调用失败,则返回值为0。
  Windows NT:若想获得更多错误信息,可调用GetLastError函数。
  注释:lpvObject参数指向的缓冲区一定要足够大以接收图形对象的信息。
  如果hgdiobj标识一个由调用CreateDIBSection创建的位图,且指定的缓冲区足够大,则GetObject函数返回一个DIBSECTION结构。另外,DIBSECTION中的BITMAP结构中的bmBits元素含有一个指向位图位值的指针。
  如果hgdiobj标识了一个通过其他途径创建的位图,则GetObject只返回位图的宽、高和颜色格式信息,通过调用GetDIBits或GetBitmapBits函数可以得到位置的位值。
  如果hgdiobj标识了一个逻辑调色板,则GetObject检索一个2字节的整数,该整数指定调色板中的项数,函数不检索定义调色板的LOGPALETTE结构,为检索有关调色板项的信息,应用程序可以调用GetPaletteEntries函数。
  Windows CE:在Windows CE 1.0中,当用在DIB上中,GetObject总返回一个BITMAP。Windows CE 1.0不支持lpvObject参数的HPALETTE值。此函数在Windows CE 2.0与在Windows桌面上一样。
 
         HFONT hFont,hTempFont,hOldFont;
         LOGFONT lf;
         HDC hDC;
         hDC=GetDC(hWnd);
         TextOut(hDC,10,10,"Using Default Font",18);
         hFont=(HFONT)GetCurrentObject(hDC,OBJ_FONT);
         GetObject(hFont,sizeof(lf),&lf);
         //改变当前字体的一些特性
         lf.lfEscapement=900;
         lf.lfOrientation=900;
         lf.lfWeight=900;
         //生成一个新字体,并把它选入DC中
         hTempFont=CreateFontIndirect(&lf);
         hOldFont=(HFONT)SelectObject(hDC,hTempFont);
         TextOut(hDC,10,30,"Using New Font",14);
         SelectObject(hDC,hOldFont);
         ReleaseDC(hWnd,hDC);
 
8.HGDIOBJ GetStockObject(int fnObject);
函数功能:该函数检索预定义的备用笔、刷子、字体或者调色板的句柄。
  参数:
  fnObject:指定对象的类型,该参数可取如下值之一;
  BLACK_BRUSH:黑色画笔;DKGRAY_BRUSH:暗灰色画笔;DC_BRUSH:在Windows98,Windows NT 5.0和以后版本中为纯颜色画笔,缺省色为白色,可以用SetDCBrushColor函数改变颜色,更多的信息参见以下的注释部分。GRAY_BRUSH:灰色画笔;HOLLOW_BRUSH:空画笔(相当于HOLLOW_BRUSH);
  LTGRAY_BRUSH:亮灰色画笔;NULL_BRUSH:空画笔(相当于HOLLOW_BRUSH);
  WHITE_BRUSH:白色画笔;BLACK_PEN:黑色钢笔;
  DC_PEN:在Windows98、Windows NT 5.0和以后版本中为纯色钢笔,缺省色为白色,使用SetDCPenColor函数可以改变色彩,更多的信息,参见下面的注释部分。
  WHITE_PEN:白色钢笔;ANSI_FIXED_FONT:在Windows中为固定间距(等宽)系统字体;
  ANSI_VAR_FONT:在Windows中为变间距(比例间距)系统字体;
  DEVICE_DEFAUCT_FONT:在WindowsNT中为设备相关字体;
  DEFAULT_GUI_FONT:用户界面对象缺省字体,如菜单和对话框;
  OEM_FIXED_FONT:原始设备制造商(OEM)相关固定间距(等宽)字体;
  SYSTEM_FONT:系统字体,在缺省情况下,系统使用系统字体绘制菜单,对话框控制和文本;
  SYSTEM_FIXED_FONT:固定间距(等宽)系统字体,该对象仅提供给兼容16位Windows版本;
  DEFAULT_PALETTE:缺省调色板,该调色板由系统调色板中的静态色彩组成。
  返回值:如果成功,返回值标识申请的逻辑对象,如果失败,返回值为NULL。
  WindowsNT:若想获得更多错误信息,请调用GetLastError函数。
  注释:仅在CS_HREDRAW和CS_UREDRAW风格的窗口中使用DKGRAY_BRUSH、GRAY_BRUSH和LTGRAY_BRUSH对象。
  如果在其他风格的窗口中使灰色画笔,可能导致在窗口移动或改变大小之后出现画笔模式错位现象,原始储存画笔不能被调整。
  HOLLOW_BRUSH和NULL_BRUSH储存对象相等。
  由DEFAULT_GUI_FONT储存对象使用的字体将改变。当想使用菜单、对话框和其他用户界面对象使用的字体时请使用此储存对象。
  不必要通过调用DeleteObject函数来删除储存对象。
  Windows 98、Windows NT 5.0和以后版本:DC_BRUSH和DC_PEN都能与其他储存对象如BLACK_BRUSH和BLACK_PEN相互交换关于检索当前钢笔和画笔颜色的信息,请参见GetDCBrushColor和GetDCPencolor,带DC BRUSH或DC PEN参数的Getstockobject函数可以与SetDCPenColor和SetDCBrushColor函数相互交换使用。
  Windows CE:Windows CE不支持fnObject参数的如下值:
  ANSI_FIXED_FONT、ANSI_VAR_FONT、OEM_FIXED_FONT、SYSTEM_FIXED_FONT
  Windows CE1.0版本不支持fnObject的DEFAULT_PALETTE值。
 
9.DWORD GetObjectType(HGDIOBJ h);
函数功能:该函数确定指定对象的类型。
  参数:
  h:图形对象的句柄。
  返回值:如果成功,返回值标识该对象,它可取如下值:
  OBJ_BITMAP:位图(Bitmap);OBJ_BRUSH:画笔(Brush);OBJ_FONT:字体(Font);OBJ_PAL:调色板(palette);
  OBJ_EXTPEN:扩展笔(Extendedpen);OBJ_REGION:区域(Region);OBJ_DC:设备上下文环境(Devicecontext);
  OBJ_MEMDC:存设备上下文环境;OBJ_METAFILE:图元文件;OBJ_ENHMETAFILE:增强图元文件;
  OBJ_ENHMETADC:增强图元文件设备上下文环境;
  如果失败,返回值为零,若想获得更多错误信息,请调用GetLastError函数。
  Windows CE:Windows CE不支持下列返回值:
  OBJ_EXTPEN;OBJ_METADC;OBJ_METAFILE;OBJ_ENHMETAFILE;OBJ-ENHMETADC
  Windows CE 1.0版不支持OBJ_PAL返回值。
         HGDIOBJ hGdi;
         //获取库存的黑灰色画刷
         hGdi=GetStockObject(DKGRAY_BRUSH);
         if(GetObjectType(hGdi)==OBJ_BRUSH)
              MessageBox(NULL,"OBJ_BRUSH IS BRUSH","OK",MB_OK);

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多