http://msdn.microsoft.com/en-us/library/sa8ahz7h(v=vs.80).aspx
//Border
CPen pen;
pen.CreatePen(PS_DASH, 20, RGB(0, 0, 0));
CPen* penOld = dc.SelectObject(&pen);
dc.Rectangle(rect);
dc.FillRect(rect, &brush);
此代码如何工作?它绘制一个矩形,然后围绕它绘制边框。我只是无法理解它。
答案 0 :(得分:2)
当您要求设备上下文绘制矩形时,它将使用当前Pen
。
您可以使用Pen
方法设置当前Brush
,SelectObject()
,裁剪区域等。你基本上是在说“从现在开始使用这支笔”。
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)
答案 1 :(得分:0)
创建一支笔,将其选入DC,然后指示DC使用笔(宽度为20像素)在指定坐标处绘制一个矩形。然后用刷子填充那个矩形的内部。