2017-07-27 2 views
1

j'ai TableLayout avec 10x10 (colonnes x lignes), je peux objets goutte dans ces cellules.
Je veux ajouter une image (en arrière-plan) à cette TableLayout qui peut être et couvre scrollable toutes les cellules du tableau, l'utilisateur peut télécharger une taille d'image. Glisser/Déposer fonctionne, mon problème est: Je ne peux pas faire défiler l'image de table, j'ai mis AutoScroll à vrai. toute idée comment résoudre cebackgroundImage Scrollable d'un TableLayout dans winforms

Mise à jour: maintenant je peux faire défiler mais l'image est affichée en mauvaise façon

private void addImage() 
     { 
      Image img = Image.FromFile(@"C:\Users\c1\Desktop\img_Clean.png"); 
      if (tableLayoutDropZone.BackgroundImage != null) tableLayoutDropZone.BackgroundImage.Dispose(); 
      tableLayoutDropZone.BackgroundImage = img; 
      tableLayoutDropZone.AutoScrollPosition = Point.Empty; 
      tableLayoutDropZone.AutoScrollMinSize = new Size(img.Width, img.Height); 

     } 

Répondre

1

Vous devez faire trois choses:

  • Set yourTLP.AutoScroll = true et, bien sûr, la BackgroundImageLayout=None

  • Définissez un AutoScrollMinSize approprié; Il devrait avoir la même taille que l'image que vous utilisez comme BackgroundImage, à savoir lorsque l'image change besoin de réinitialiser le AutoScrollMinSize

  • vous devez coder l'événement Paint pour inclure cette ligne: e.Graphics.DrawImage(yourTLP.BackgroundImage, yourTLP.AutoScrollPosition);

enter image description here

Voici mon code pour charger une nouvelle image:

Image img = Image.FromFile(someimagepath); 
if (yourTLP.BackgroundImage != null) yourTLP.BackgroundImage.Dispose(); 
yourTLP.BackgroundImage = img; 
yourTLP.AutoScrollPosition = Point.Empty; 
yourTLP.AutoScrollMinSize = new Size(img.Width, img.Height); 

Notez que le TLP fait défiler les contrôles il détient sont également défilé!

Si vous voulez qu'ils restent fixes vous pouvez faire ceci:

  • Retirez tous les paramètres ci-dessus et le code
  • Créer une Panel avec les mêmes mêmes paramètres et le code
  • Réglez le BackColor de votre TLP-Transparent
  • Nest dans le Panel

Vous pouvez activer DoubleBuffering pour un défilement plus fluide ..

+0

Merci pour votre réponse, mais quand je défiler le contenu de l'image est en désordre s'il vous plaît jeter un oeil [lien] (http: //imgur.com/3vfDDu3) eventho i overided la méthode OnPaint que vous avez dit –

+0

Hm, pas ici. Veuillez mettre à jour la question pour montrer le code Paint complet! (Btw je ne vois pas d'erreurs dans l'image) – TaW

+0

s'il vous plaît jeter un oeil à ceci: [link] (http://imgur.com/a/T7Sj5) –