2012-05-28 2 views
1

rounded rectaangle Je dessine un rectangle de coin arrondi à l'aide de l'API RoundRect windows.Les arêtes arrondies avec RoundRect ne sont pas lisses

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

Ici, je dessine un rectangle avec une largeur de coin arrondie et une hauteur = 4 px. Ensuite, je veux remplir le rectangle arrondi. Pour que je créais région rectangulaire à l'aide

CreateRoundRectRgn 

puis appeler API FillRgn.

Le problème est que, après le remplissage, je peux voir la couleur de remplissage à l'extérieur des coins arrondis aussi. Puisque je crée la région arrondie, le remplissage devrait seulement être à l'intérieur de cette région.

Toutes les idées pour lesquelles il va à l'extérieur rectangle arrondi?

Répondre

3

RoundRect remplit déjà le rectangle en utilisant le pinceau actuel. Utilisez simplement SelectObject pour sélectionner le pinceau que vous voulez.

Ce qui rend les observations suivantes quelque peu redondantes. RoundRect et CreateRoundRectRgn interprètent les coordonnées différemment. Les coordonnées de RoundRect sont inclusives mais les CreateRoundRectRgn sont exclusives en bas à droite (vous devez donc en ajouter une aux coordonnées en bas à droite dans ce dernier cas). Et puisque Windows ne fournit pas de fonction pour obtenir une région correspondant à l'intérieur d'un rectangle arrondi, vous n'obtiendrez jamais une précision parfaite si vous le remplissez vous-même (l'intérieur d'un rectangle arrondi n'est pas le Identique à un rectangle arrondi légèrement plus petit).

Questions connexes