Announcement

Collapse
No announcement yet.

Zeichnen mit GDI+ / Anomalien

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zeichnen mit GDI+ / Anomalien

    Hallo liebe Leute,

    folgendes Problem:

    die Größe des Clients/Controls wird nicht richtig wiedergegeben. Muss ich etwa die Ränder beachten und wie?


    public Form1()
    {
    InitializeComponent();
    this.ClientSize = new System.Drawing.Size(600, 800);
    }


    wenn die Breite richtig ausgegeben wird so wird die Höhe immer kleiner angezeigt:

    MessageBox.Show (" " + this.ClientSize.Height); // Ergebnis ist : 774

    warum wie kann ich jedes mal automatisch sicher die Höhe und Breite meines Elements feststellen damit die zuzeichnende Elemente
    an der richtigen Stelle dargestellt werden?

  • #2
    Muss ich etwa die Ränder beachten und wie?
    Jein Es werden die Ränder berücksichtigt aber die ohne irgendein Theming. Ich weiß nicht ob die ab irgendeinen Zeitpunkt mit in die Berechnung der ClientSize mit einfließen. Hab da aber eher Zweifel. Versuch deshalb mal die ClientSize erst im Shown Event zu setzen. Wenn das nicht hilft mußt du wahrscheinlich Themingabhängig (Aero, XP Theming, Form mit Ribbon Header oder nicht) die ClientSize korrigieren.

    Comment


    • #3
      Originally posted by Ralf Jansen View Post
      Jein Es werden die Ränder berücksichtigt aber die ohne irgendein Theming. Ich weiß nicht ob die ab irgendeinen Zeitpunkt mit in die Berechnung der ClientSize mit einfließen. Hab da aber eher Zweifel. Versuch deshalb mal die ClientSize erst im Shown Event zu setzen. Wenn das nicht hilft mußt du wahrscheinlich Themingabhängig (Aero, XP Theming, Form mit Ribbon Header oder nicht) die ClientSize korrigieren.
      ... Du meinst anstatt im Konstruktor?
      Und wie setzte ich sie im Shown Event, ist das ein Event der Form?

      Comment


      • #4
        Und wie setzte ich sie im Shown Event, ist das ein Event der Form?
        Genauso wie im Konstruktor und ja Shown ist ein Event der Form. Ist der erste Event der nach dem Anzeigen gefeuert wird. Daher ist jegliche Theming Logik schon passiert und es besteht zumindest eine kleine Hoffnung das das dann auch berücksichtigt wird.

        Comment


        • #5
          Wie kann ich den überhaupt am Besten eine Menge Dreiecke hintereinander zeichnen lassen wenn ich nur auf Basis von GDI+ bleibe ( jetzt nicht mit wpf , xna usw.) ?

          Comment


          • #6
            Die Frage wäre hier jetzt ob es nicht mit GDI+ möglich ist einen eigenen Canvas zu erzeugen ohne dafür eine Form zu haben. Wie ich das verstehe möchtest Du etwas komplett selbst gezeichnetes erstellen wie z.B. ein Spiel. Da wäre mir jetzt das Windows Forms Event Modell schon zu unhandlich. Windows Forms ist eben in erster Linie dazu gedacht Formulare zu rendern und nicht für Animation.

            Comment


            • #7
              Du nimmst dir die Graphics Klasse (aus System.Drawing) und zeichnest mit dieser Linien die Dreiecke ergeben und das wiederholst du ganz oft.

              Comment


              • #8
                Originally posted by Ralf Jansen View Post
                Du nimmst dir die Graphics Klasse (aus System.Drawing) und zeichnest mit dieser Linien die Dreiecke ergeben und das wiederholst du ganz oft.
                Warum nicht Polygone zeichnen, ist es mit Linie wirklich besser?

                Comment

                Working...
                X