【问题标题】:Can someone explain me the CDC::SelectObject to me?有人可以向我解释一下 CDC::SelectObject 吗?
【发布时间】:2012-10-18 03:12:41
【问题描述】:

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

这段代码是如何工作的?它绘制一个矩形,然后在它周围画一个边框。我就是想不通。

【问题讨论】:

    标签: mfc


    【解决方案1】:

    当你要求设备上下文绘制一个矩形时,它会使用当前的Pen

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

    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)
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2014-04-20
        • 2011-04-24
        • 2019-11-28
        • 2012-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-08
        • 2012-05-09
        相关资源
        最近更新 更多