有人可以向我解释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个像素)在指定坐标处绘制一个矩形。然后用刷子填充矩形的内部。