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

このメソッドを使用して、現在PenBrush、、クリッピング領域などを設定できます。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 に選択してから、ペン (幅 20 ピクセル) を使用して指定された座標に四角形を描画するように DC に指示します。次に、その長方形の内側をブラシで塗りつぶします。

于 2012-10-17T16:59:35.757 に答える