1

丸みを帯びた長方形 RoundRectWindowsAPIを使用して角の丸い長方形を描画しています。

RoundRect(hdc,0,0,100,100,4,4);

ここでは、角の幅が丸く、高さが4ピクセルの長方形を描画しています。

その後、角の丸い長方形を塗りつぶしたいと思います。そのために私はを使用して長方形の領域を作成しています

CreateRoundRectRgn

次に、FillRgnAPIを呼び出します。

問題は、塗りつぶした後、丸みを帯びた角の外側にも塗りつぶしの色が表示されることです。丸みを帯びた領域を作成しているので、塗りつぶしはその領域内にのみ行う必要があります。

丸みを帯びた長方形の外側に出る理由はありますか?

4

1 に答える 1

4

RoundRect現在のブラシを使用して既に四角形を塗りつぶしています。を使用SelectObjectして、必要なブラシを選択するだけです。

これにより、次の観察はやや冗長になります。 座標を別の方法 RoundRectで解釈します。の座標は包括的ですが、 は右下では排他的です (したがって、後者の場合、右下の座標に 1 を追加する必要があります)。CreateRoundRectRgnRoundRectCreateRoundRectRgn

また、Windows には角丸四角形の内部に対応する領域を取得する関数が用意されていないため、自分で塗りつぶしてもピクセル単位の正確さは得られません (角丸四角形の内部は、わずかに異なる場合があります)。小さい角丸長方形)。

于 2012-05-28T16:06:27.950 に答える