• c++ GDI 中SelectObject使用方法和注意事项


    介绍

    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 );
    函数功能:该函数选择一对象到指定的设备上下文环境中,该新对象替换先前的相同类型的对象。
    函数原型:HGDIOBJ SelectObject(HDC hdc, HGDIOBJ hgdiobj);
    参数:
    hdc:设备上下文环境的句柄。
    hgdiobj:被选择的对象的句柄,该指定对象必须由如下的函数创建。
    位图:CreateBitmap, CreateBitmapIndirect, CreateCompatible Bitmap, CreateDIBitmap, CreateDIBsection(只有内存设备上下文环境可选择位图,并且在同一时刻只能一个设备上下文环境选择位图)。
    画刷:CreateBrushIndirectCreateDIBPatternBrushCreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush。
    字体:CreateFont, CreateFontIndirect。
    笔:CreatePen, CreatePenIndirect。
    返回值:如果选择对象不是区域并且函数执行成功,那么返回值是被取代的对象的句柄;如果选择对象是区域并且函数执行成功,返回如下一值;
    SIMPLEREGION:区域由单个矩形组成;COMPLEXREGION:区域由多个矩形组成。NULLREGION:区域为空。
    如果发生错误并且选择对象不是一个区域,那么返回值为NULL,否则返回GDI_ERROR。
    注释:该函数返回先前指定类型的选择对象,一个应用程序在它使用新对象进行绘制完成之后,应该用原始的缺省的对象替换新对象。
    应用程序不能同时选择一个位图到多个设备上下文环境中。
    ICM:如果被选择的对象是画笔或笔,那么就执行颜色管理。
    速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:wingdi.h;库文件:gdi32.lib。

    编辑本段示例

    HDC hdc=GetDC(hwnd);
    HDC memdc=CreateCompatibleDC(hdc);
    RECT rc;
    BITMAP bmp;
    HBITMAP holdbmp,hbmp=LoadBitmap(hInstDVBRes,MAKEINTRESOURCE(IDB_CLOCK));//从资源加载位图
    holdbmp=(HBITMAP)SelectObject(memdc,hbmp);//这里把hbmp的位图选择到兼容DC memdc,之后这个兼容DC就拥有和
    //hbmp同样大小的绘图区域,注意超出位图返回的GDI输出都是无效的.
    GetObject(hbmp,sizeof(BITMAP),&bmp);//这里获取位图的大小信息,事实上也是兼容DC绘图输出的范围
    SetRect(&rc,0,0,bmp.bmWidth,bmp.bmHeight);
    DrawText(memdc,"Center Line Text" -1,&rc,DT_VCENTER|DT_SINGLELINE|DT_CENTER);//在兼容DC中间位置输出字符串
    //这样以来我们就相当于把hbmp这个位图加上了文字标注,我们可以把这个增加了文字标注的位图保存起来.一个简单的图像处理基本就OK了.
    SelectObject(memdc,holdbmp);//复原兼容DC数据.
    DeleteDC(memdc);

     参考:新编Windows API参考大全

  • 相关阅读:
    Path 环境变量
    Scala_ 类_可见性
    ubuntu16.04 注意特别出
    Python基础之文件操作
    python之set集合操作
    python数据类型之字典操作
    python的数据类型之列表list
    Python的条件控制及循环
    使用jmeter做接口测试
    AMD64 专业名词缩写
  • 原文地址:https://www.cnblogs.com/lidabo/p/2975616.html
Copyright © 2020-2023  润新知