1

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);

这段代码是如何工作的?它绘制一个矩形,然后在它周围画一个边框。我只是无法理解它。

4

2 回答 2

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)
于 2012-10-17T19:12:41.990 回答
0

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

于 2012-10-17T16:59:35.757 回答