Appelez Invalidate
pour redessiner le Form
, afin que le OnPaint(PaintEventArgs e)
soit exécuté.
Vérifiez l'exemple suivant:
public sealed partial class GraphicsPathForm : Form
{
private bool _graphicsPathIsVisible;
private readonly Pen _pen = new Pen(Color.Red, 2);
private readonly Brush _brush = new SolidBrush(Color.FromArgb(249, 214, 214));
private readonly GraphicsPath _graphicsPath = new GraphicsPath();
private Rectangle _rectangle = new Rectangle(10, 30, 100, 100);
public GraphicsPathForm()
{
InitializeComponent();
_graphicsPath.AddRectangle(_rectangle);
}
protected override void OnPaint(PaintEventArgs e)
{
var g = e.Graphics;
g.CompositingQuality = CompositingQuality.HighQuality;
g.InterpolationMode = InterpolationMode.Bilinear;
g.SmoothingMode = SmoothingMode.AntiAlias;
g.DrawPath(_pen, _graphicsPath);
if (_graphicsPathIsVisible)
g.FillPath(_brush, _graphicsPath);
base.OnPaint(e);
}
protected override void OnMouseMove(MouseEventArgs e)
{
var isVisible = _graphicsPath.IsVisible(e.Location);
if (isVisible == _graphicsPathIsVisible)
return;
const int zoom = 5;
if (isVisible)
{
if (!_graphicsPathIsVisible)
{
_rectangle.Inflate(zoom, zoom);
_graphicsPath.Reset();
_graphicsPath.AddRectangle(_rectangle);
}
}
else
{
if (_graphicsPathIsVisible)
{
_rectangle.Inflate(-zoom, -zoom);
_graphicsPath.Reset();
_graphicsPath.AddRectangle(_rectangle);
}
}
_graphicsPathIsVisible = isVisible;
Invalidate();
base.OnMouseMove(e);
}
}
J'espère que ça aide.
Règle générale pour le rendu Winforms: ne dessine que dans les événements Paint ou OnPaint() '; garder trace quelque part ce que vous voulez dessiner (par exemple bitmap, liste de points, objets, etc.); appelez 'Invalidate()' quand vous voulez que l'écran soit redessiné (c'est-à-dire quand les choses que vous gardez trace de dessiner ont changé). De votre question, je suppose que vous avez violé toutes ces règles (une erreur commune pour les nouveaux programmeurs). Donc, l'étape n ° 1 est de comprendre ces règles, et d'étudier des tutoriels et de la documentation qui expliquent pourquoi ces règles existent et comment travailler en leur sein. –