2010-06-30 2 views
0

J'ai un com-composant graphique de notre fournisseur. Je l'ai placé sous forme principale et je veux dessiner dessus. Mais MainForm_paint ne dessine pas au-dessus de ce composant. Y a-t-il un moyen de peindre au-dessus de ce composant?Il ne dessine pas ci-dessus com-composant

C#, WinForms, 2.0

code:

void MainForm_Paint(object sender, PaintEventArgs e) 
    { 
      using (SolidBrush b2 = new SolidBrush(Color.Red)) 
      { 
       e.Graphics.FillRectangle(b2, this.ClientRectangle); 
      } 

      Pen pen = new Pen(Color.Black, 2.0f); 
      e.Graphics.DrawLine(pen, 0, 0, 100, 100); 
      pen.Dispose(); 
    } 

Il n'a pas rempli rien et il n'a pas tiré une ligne. ComComponent.DockStyle = DockStyle.Fill

+0

Montrez-nous le code. – Oded

+0

parlez-vous d'ActiveX? – Arseny

+0

@Oded, je l'ai ajouté à un texte de question. @Arseny, oui. – nik

Répondre

0

Vous ne pouvez pas dessiner au-dessus du composant. ActiveX a son propre message Paint. Si l'événement Paint est visible dans votre conteneur (winform), vous pouvez le remplacer.

+0

Oui, il a son propre message Paint. J'ai placé mon code mais aucun effet = \ – nik

0

Si vous pouvez définir l'arrière-plan du contrôle sur transparent, faites-le. Sinon, il pourrait être possible de sous-classer la fenêtre du contrôle et d'ignorer WM_ERASEBKGND (ou quel que soit son nom). Ou si vous savez exactement où vous voulez peindre, vous pouvez placer une fenêtre non-rectangulaire au-dessus du contrôle ActiveX.

Edit: Ajouté dernière suggestion

+0

J'ai une propriété appelée CtlBackColor. Je peux définir sa valeur sur Transparent mais cela ne change rien. – nik

Questions connexes