有人可以向我解释CDC :: SelectObject吗?

问题描述:

http://msdn.microsoft.com/en-us/library/sa8ahz7h(v=vs.80).aspx有人可以向我解释CDC :: SelectObject吗?

//Border 
     CPen pen; 
     pen.CreatePen(PS_DASH, 20, RGB(0, 0, 0)); 
     CPen* penOld = dc.SelectObject(&pen); 

     dc.Rectangle(rect); 
     dc.FillRect(rect, &brush); 

请问这个代码工作的?它绘制一个矩形,然后绘制一个边框。我无法理解它。

当您要求设备上下文画一个矩形时,它将使用当前的Pen

您可以使用SelectObject()方法设置当前的Pen,Brush,剪辑区域或任何其他内容。你基本上是说“从现在开始使用这支笔”。

SelectObject()也返回它以前使用的项目,以便它不会丢失并泄漏内存,并且如果需要可以稍后再放回。这就是为什么penOld被保存到代码中的一个变量。稍后可能会再次选择它。

CPen pen;         //declare a new Pen object 
pen.CreatePen(PS_DASH, 20, RGB(0, 0, 0)); //Create the GDI Pen, dashed, 20 pixels wide, black. 
CPen* penOld = dc.SelectObject(&pen);  //Tell the DC to use this pen from now on. 

dc.Rectangle(rect);      //Draw a rectangle (using the current pen) 
dc.FillRect(rect, &brush);     //Fill a rectangle (using the current brush) 

它创建一支笔,将其选中到DC中,然后指示DC使用笔(宽20个像素)在指定坐标处绘制一个矩形。然后用刷子填充矩形的内部。