2009-11-06 2 views
2

Je développe un contrôle graphique dans WPF. Je dois placer un Canvas au-dessus d'un autre. Un Canvas contient les lignes de grille et l'autre Canvas dessine les objets sur celui-ci.en plaçant une toile sur une autre dans WPF?

La raison pour cela est que j'ai besoin de retirer les éléments du canevas de l'objet et de le redessiner, mais j'ai besoin de garder les lignes de la grille sans les supprimer. Je retire donc les enfants de la toile de l'objet et je la redessine de temps en temps. Si j'utilise la même toile lorsque j'enlève les objets, le quadrillage disparaît aussi.

Y a-t-il un moyen de placer une toile l'une sur l'autre? Ou y a-t-il une autre solution à mon problème?

aidez s'il vous plaît.

salutations, rangana.

Répondre

3

Il y a plusieurs façons de le faire. En voici un. Développez simplement la classe Canvas et dessinez la grille vous-même dans la méthode OnRender.

public class GridCanvas : Canvas 
{ 
    public int rows = 4; 
    public int cols = 4; 

    protected override void OnRender(System.Windows.Media.DrawingContext dc) 
    { 
     double yStep = this.ActualHeight/rows; 
     double y = yStep; 

     for (int i = 0; i < rows - 1; i++) 
     { 
      dc.DrawLine(new Pen(Brushes.Black, 1), new Point(0, y), new Point(this.ActualWidth, y)); 
      y += yStep; 
     } 

     double xStep = this.ActualWidth/cols; 
     double x = xStep; 

     for (int i = 0; i < cols - 1; i++) 
     { 
      dc.DrawLine(new Pen(Brushes.Black, 1), new Point(x, 0), new Point(x, this.ActualHeight)); 
      x += xStep; 
     } 
    } 
} 
Questions connexes