`
javababy1
  • 浏览: 1170914 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

关于SelectObject的使用

 
阅读更多

关于SelectObject的使用

void CMy10View::OnDraw(CDC* pDC)

{

pDC->MoveTo (10,10);

pDC->LineTo (110,10);

CPen newPen(PS_DASHDOTDOT,10,(COLORREF) 192); //红色的笔宽度为10

CPen * pOldPen=pDC->SelectObject (&newPen);

//在将新对象选进设备环境的同时返回指向前一次被选对象的指针。作用保存原来的对象,以便完成任务时恢复它。

。。。

pDC->SelectObject (pOldPen);//把原来的对象恢复

}

由于SelectObject函数返回的GDI C++对象指针具有临时性,当程序的空闲处理阶段或者控制函数返回时应用程序框架会将临时的C++对象删除,我们不能简单的把这一指针保存在类的数据成员中,而应该借助GetSafeHdc函数将它转化为Windows的句柄,以便持久的保存GDI的标识。(不太理解)

通过句柄保存gdi对象

void CMy10View::OnDraw(CDC* pDC)

{

HPEN m_hPen; //一个指向CPen对象的指针

pDC->MoveTo (10,10);

pDC->LineTo (110,10);

CPen newPen(PS_DASHDOTDOT,10,(COLORREF) 192); //红色的笔宽度为10

CPen * pOldPen=pDC->SelectObject (&newPen); //在将新对象选进设备环境的同时返回指向前一次被选对象的指针。作用保存原来的对象,以便完成任务时恢复它。

m_hPen=(HPEN)pOldPen->GetSafeHandle ();//获得并保存原来对象的句柄

pDC->MoveTo (10,20);

pDC->LineTo (110,20);

pDC->SelectObject (CPen::FromHandle (m_hPen));//把原来的对象恢复,和例子7-2不同的是通过句柄

pDC->MoveTo (10,30);

pDC->LineTo (110,30);

}

恢复gdi对象句柄是为了以后的操作仍然使用原来的gdi对象

源文档 <http://www.wangchao.net.cn/bbsdetail_71180.html>

分享到:
评论

相关推荐

    字形窗口_sub_visualbasic_vb6_字形特效窗体_

    ) BeginPath dc '开始记录窗体轮廓路径 SetBkMode dc TRANSPARENT '设置背景为透明模式这是必须有的 OldFont = SelectObject(dc NewFont) TextOut dc00 &quot;VB6&quot;3 SelectObject dc OldFont EndPath dc ...

    基于C++的包含鼠标位置的屏幕截屏并保存为图片文件.zip

    最后,使用SelectObject将把创建的兼容位图选进兼容内存设备上下文环境中,并使用BitBlt函数把桌面内容绘制到兼容位图上 详细介绍参考:https://blog.csdn.net/sheziqiong/article/details/131568207

    selectobject_java.rar_java 网上 选课系统_网上选课_网上选课系统_选课系统

    java语言编写,网上选课系统 本程序能够正确运行,windows 2000/xp

    clock实现,使用VC++编写,不是很难

    brushOld=pDC-&gt;SelectObject(&brush); pDC-&gt;Ellipse(x - SQUARESIZE , y + SQUARESIZE , x + SQUARESIZE , y - SQUARESIZE); pDC-&gt;SelectObject(brushOld); brush.DeleteObject(); } else { ...

    C++代码,实现随机生成三个点,给每个点一种颜色,以这三个点为顶点绘制填充三角形,填充颜色根据顶点颜色渐变的功能

    代码使用SelectObject函数,将设备上下文的当前画刷设置为第一个画刷对象。 代码使用Polygon函数,根据点坐标数组绘制一个实心三角形,填充颜色为第一个画刷对象的颜色。 代码使用GradientFill函数,根据点坐标数组...

    c++简单设计界面

    POldBrush = PDC-&gt;SelectObject (&Brush); // draw figure: PDC-&gt;Rectangle (m_X1, m_Y1, m_X2, m_Y2); // remove pen/brush: PDC-&gt;SelectObject (POldPen); PDC-&gt;SelectObject (POldBrush); } IMPLEMENT...

    WIN 画笔API使用

    基本的创建画笔, 以桌面为DC #include int main( void ) ... HPEN hpen_old = (HPEN)SelectObject( hdc, hpen1 ); Ellipse( hdc, 40, 200, 40+200, 200+50 ); SelectObject( hdc, hpen_old ); return 0; }

    Delphi 为窗体增加边框.rar

     brush:= SelectObject(aa,getstockobject(null_brush));  Rectangle(aa,0,0,form1.Width ,form1.Height );  SelectObject(aa,brush);  SelectObject(aa,pen);  DeleteObject(bb);  ReleaseDc(handle,canvas....

    delphi学习杂记

    OldBrush := SelectObject(dc, GetStockObject(NULL_BRUSH)); Rectangle(dc, 0, 0, Self.Width, Self.Height); SelectObject(dc, OldBrush); SelectObject(dc, OldPen); DeleteObject(Pen); ReleaseDC(Handle, ...

    MFC时钟程序C++源代码

    CPen *pOldPen = pDC-&gt;SelectObject(&penOther); CBrush *pOldBrush = pDC-&gt;SelectObject(&brMain); CPoint ptCenter = m_rcRegion.CenterPoint(); int nRadius = m_nRadius - 8; for(int i = 0; i ; i++) {...

    GDI截屏和DX截屏

    GDI截屏和DX截屏,保存到BMP文件

    透明的对话框transparent_dialog.rar

    //add these to store return of SelectObject() calls CBitmap* pOldMemBmp = NULL; CBitmap* pOldMaskBmp = NULL; HBITMAP hOldTempBmp = NULL; memDC.CreateCompatibleDC(&dc); tempDC....

    windowCDC 绘图

    抽象出画笔,通过调用CDC类的SelectObject函数传参后,才能使用 2. 画笔创建时需要指定的宽度(像素为单位)、颜色(R/G/B 3源色,使用宏RGB(,,,)创建,取值0~255)、线型(实线--宏PS_SOLID, 虚线--宏PS_DASH,...

    MP3播放器 多功能

    使用Rectangle函数 刷背景,SELECTOBJECT 选择 对象,制作背景

    绘制直线多边形等常见图形

    画直线 : CClientDC dc(this);... dc.SelectObject(&pen););//选入设备描述表 CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(BLACK_BRUSH));//填充色 dc.SelectObject(pBrush);//选入设备描述表

    vb-将BMP图转化为ICO

    Private Sub ExtractIconComposite(inPic As PictureBox) On Error Resume Next Dim ipic As IPicture Dim icoinfo As ICONINFO Dim pDesc As pictDesc Dim hDCWork ... SelectObject hDCWork, hBMOldWork

    比较简单的VB透明窗体实现方法.rar

     Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, _  ByVal hObject As Long) As Long'API函数声明  Private Sub Form_Load()  Dim B'声明变量  Me.AutoRedraw = True  B = ...

    计算机图形学 V从图形编程

    通常,我们都是使用GDI绘图对象类所创建的对象进行绘制各种图形的, 好象画家手里的画笔,而设备环境就是用什么样的画纸。 CPen 画笔是一种用来画线及绘制有形边框的工具,用户可以指定它的颜色及厚度,并且可以...

    简单的API绘图程序

    HBRUSH saved_brush = (HBRUSH)SelectObject(_hdc, brush); // 用选入设备环境中的刷子绘制给定的矩形区域 PatBlt(_hdc, 0, 0, _disp_xmax, _disp_ymax, PATCOPY); // 恢复原来画刷 SelectObject(_hdc, saved_...

    windows 作业

    ::SelectObject(hdc,hPen); switch(choice) { case 1: ::SelectObject(hdc,hBrush1); choice = 2; break; case 2: ::SelectObject(hdc,hBrush2); choice =...

Global site tag (gtag.js) - Google Analytics