myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grafik und Sound » Panel-Autoscroll ohne Controls [==> korrekt in das gescrollte Panel zeichnen]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Panel-Autoscroll ohne Controls [==> korrekt in das gescrollte Panel zeichnen]

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
thepaul thepaul ist männlich
myCSharp.de-Mitglied

Dabei seit: 01.03.2005
Beiträge: 151
Entwicklungsumgebung: MonoDevelop
Herkunft: Jena


thepaul ist offline

Panel-Autoscroll ohne Controls [==> korrekt in das gescrollte Panel zeichnen]

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

ich habe ein Panel, in das ich je nach Benutzereingabe mal mehr oder weniger zeichnen. deshalb wollte ich mittels Autoscroll(falls nötig) einen Scrollbar anzeigen lassen.
Allerdings habe ich festgestellt, dass der nur angezeigt wird, wenn ich Controls in das Panel schiebe. Zeichnen reicht nicht!

Wie kann ich das umgehen?

2. Frage: Wie kann ich außerdem einstellen, dass der Scrollbar unten ist nach dem Zeichnen?

MfG ThePaul
13.10.2006 15:34 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.478
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo thepaul,

zu 1. Wenn ich das richtig in Erinnerung habe mit Panel.AutoScrollMinSize. Es geht jedenfalls über irgendeine Property.

zu 2. Panel.AutoScrollPosition

herbivore
13.10.2006 15:37 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
thepaul thepaul ist männlich
myCSharp.de-Mitglied

Dabei seit: 01.03.2005
Beiträge: 151
Entwicklungsumgebung: MonoDevelop
Herkunft: Jena

Themenstarter Thema begonnen von thepaul

thepaul ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

danke für die super schnelle antwort.

zu 1.: die Eigenschaft hilft mir nicht. Hat noch jemand ne Idee welche Eigenschaft das sein könnte

zu 2.: Was für einen Punkt muss da übergeben?
13.10.2006 15:46 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.478
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo thepaul,

zu 1. Panel.AutoScrollMinSize ist das richtige. Ich habe es jetzt probiert.

zu 2.  ScrollableControl.AutoScrollPosition

herbivore
13.10.2006 15:56 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
thepaul thepaul ist männlich
myCSharp.de-Mitglied

Dabei seit: 01.03.2005
Beiträge: 151
Entwicklungsumgebung: MonoDevelop
Herkunft: Jena

Themenstarter Thema begonnen von thepaul

thepaul ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

nach langer zeit nochmal ich!

ich habe nochmal ausführlich probiert, bei mir geht es aber immer noch nicht.

Mein Code (einfach ein neues Formular erstellen, ein Button und ein Panel drauf und bei dem Panel Autosize auf true):

C#-Code:
for (int i = 0; i < 10; i++)
            {
                Graphics g = panel1.CreateGraphics();

                //Mit Zeichnen Gehts nicht :(
                //g.FillRectangle(new SolidBrush(Color.DarkCyan), 10, i * 100 + 10, 100, 90);
                //Mit Button gehts
                Button b = new Button();
                b.Text = i.ToString();
                b.Location = new Point(10, i * 100 + 10);
                b.Size = new Size(100, 90);

                panel1.Controls.Add(b);
            }
20.10.2006 11:30 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.478
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo thepaul,

vielleicht hilft dir:

C#-Code:
using System;
using System.IO;
using System.Windows.Forms;
using System.Drawing;

public class MyWindow : Form
{
   const int iWidth      = 600;
   const int iHeight     = 480;

   public MyWindow ()
   {
      Control ctrlCurr;

      Text = "MyWindow";
      ClientSize = new Size (iWidth, iHeight);

      ctrlCurr = new Panel ();
      ctrlCurr.Dock = DockStyle.Fill;
      ((Panel)ctrlCurr).AutoScroll = true;
      ((Panel)ctrlCurr).AutoScrollMinSize = new Size (3*iWidth, 3*iHeight);
      ctrlCurr.Paint += PanelPaint;
      Controls.Add (ctrlCurr);
   }

   protected void PanelPaint (Object objSender, PaintEventArgs e)
   {
      Panel pnl = ((Panel)objSender);
      Console.WriteLine (e.ClipRectangle);
      Console.WriteLine (((Panel)objSender).AutoScrollPosition);
      e.Graphics.FillEllipse (Brushes.Green,
                               10+pnl.AutoScrollPosition.X,
                               10+pnl.AutoScrollPosition.Y,
                               iWidth / 2, iHeight / 2);
   }
}

static class App
{
   public static void Main (string [] astrArg)
   {
      Application.Run (new MyWindow ());
   }
}

herbivore

PS: Man muss die AutoScrollPosition natürlich nicht überall einzeln hinzuaddieren, sondern kann stattdessen auch einmal vornweg

C#-Code:
e.Graphics.TranslateTransform (pnl.AutoScrollPosition.X, pnl.AutoScrollPosition.Y);

benutzen.

Suchhilfe: 1000 Worte
20.10.2006 11:35 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 13 Jahre.
Der letzte Beitrag ist älter als 13 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 10.08.2020 20:40