Panel, rysowanie i problem ze scrollem

Panel, rysowanie i problem ze scrollem
AH
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 15 lat
0

Witam,
W panelu wykonuję pewne operacje rysowania (nie jest to istotne)

Kopiuj
   private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Pen p1 = new Pen(Color.Black, 5);
            int yL = 40;
            foreach(string ds in Enum.GetNames(typeof(DashStyle)))
            {
                if (ds != "Custom")
                {
                    foreach(string lc in Enum.GetNames(typeof(LineCap))) {
                        p1.DashStyle = (DashStyle)(Enum.Parse(typeof(DashStyle),ds));    
                        p1.StartCap = (LineCap)(Enum.Parse(typeof(LineCap),lc));
                        p1.EndCap = (LineCap)(Enum.Parse(typeof(LineCap), lc));
                        g.DrawLine(p1, 20, yL, 120, yL);
                        g.DrawString("DashStyle:"+ds+"  LineCap:"+lc, new Font("Arial", 10), Brushes.Black, 140, yL-8);
                        yL+=20;
                    }
                }
            }
            p1.Dispose();
        }

Dla Form rozmiar minimalny i maksymalny jest ustawiony na sztywno.

W jaki sposób dodać możliwość scrollowania w poziomie i pionie, tak żebym mógł zobaczyć wszystko co zostało wykonane w operacji rysowania?

Próbowałem dla panelu ustawić this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
a dla formularza this.AutoScrollMinSize = new Size(this.panel1.Width, this.panel1.Height);
ale to nie zadziała, bo zwróci mi rozmiary panelu, przed rysowaniem, a po rysowaniu oczywiście będzie dłuższy. Próbowałem też ręcznie ustawić this.AutoScrollMinSize = new Size(999999,99999), ale to także jest bez sensu bo tego rozciągania będzie za dużo.

Jak ustawić, żeby scroll automatycznie dostosowywał się do wielkości tego co zostało narysowane, ręcznie w tym przypadku nie ustawię wielkości bo nie wiem jakich rozmiarów będzie obraz?

LA
  • Rejestracja:ponad 22 lata
  • Ostatnio:ponad 13 lat
0
Kopiuj
            PictureBox bt = new PictureBox();
            
            bt.Parent = panel1;
            bt.Location = new Point(2000, 2000);

pseudokod, pisalem z glowy, ale mniej wiecej o to chodzi :)


Lardux

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.