Élimination des artefacts visuels dans les contrôles utilisateur zoomables redimensionnables avec des coins arrondis
Dans ce numéro, un contrôle utilisateur avec des coins arrondis et des bordures colorées présente des artefacts visuels lorsque zoomé ou dézoomé. Le côté droit de la bordure devient invisible lors d'un zoom arrière, et plusieurs bordures jaunes apparaissent sur le côté droit lors d'un zoom avant.
Explication du problème
Les artefacts visuels proviennent de la façon dont la région du UserControl est définie et la bordure est peinte. Lorsque la région est créée, ses frontières extérieures ne sont pas anticrénelées, ce qui entraîne la perte de la section extérieure de la bordure peinte en dehors de la région.
Solution suggérée
Pour résoudre ce problème, une approche de dessin modifiée est proposée :
Exemple de code
Le code suivant illustre ces éléments modifications :
using System.Drawing; using System.Drawing.Drawing2D; public class RoundedControl : UserControl { // ... Your existing code // ... Added code suggested in the solution private void UpdateRegion() { GraphicsPathWithBorder = RoundedCornerRectangle(ClientRectangle); Region = new Region(GraphicsPathWithBorder); Invalidate(); } }
Avantages de la solution
Remarque : La courbeSize dans la méthode RoundedCornerRectangle devra peut-être être ajustée pour empêcher certaines parties du contrôle de s'étendre au-delà de la bordure.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!