Laden...

Teil von Form einfärben

Erstellt von Blue_Dragon vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.026 Views
B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 18 Jahren
Teil von Form einfärben

Hallo Leute!

Ich hätt ne Frage und zwar, wie kann ich einen Teil einer Form weiß einzeichnen und dann trotzdem mit GDI was draufmalen?

Also die Form soll im allgemeinen normal grau sein, dann soll aber ein weißes Kästchen drinnen sein, in das ich zeichnen möchte....

Wie kann ich ich die Form so teilweise einfärben?

lg

Dragon

1.549 Beiträge seit 2004
vor 18 Jahren

Eben genau mit GDI (FillRectangle)du must das Rechteck nur vor den anderen Sachen zeichen damit es nicht den Rest Verdeckt

Wenn ich dir einen tip geben darf pack das Ganze doch in ein eigenes Control dann kannst du es um einiges leichter wiederverwenden

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 18 Jahren

Hallo!

Ich bin mit GDI+ noch nicht so starkt vertraut aber kann mir jemand von euch sagen warum ein Punkt der an this.Heigt und this.Width sitzt, nicht der rechte untere Rand der Form ist?

Er sitzt irgendwo auf der Form, ich brauche ihn aber genau an der rechten unteren Ecke und ein Rechteck zeichnen zu können.

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Blue_Dragon,

wenn mit this das Form gemeint ist, müsste der Punkt eigentlich außerhalb des Forums liegen.

Koordinaten ist immer relativ zur ClientArea des jeweiligen Forms/Controls. Bei einem Form ist die ClientArea der Bereich ohne z.B. Titelleiste und Fensterrahmen.

Mit ClientArea.Width/Height müsste der Punkt an der richtigen Stelle gezeichnet werden.

herbivore

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 18 Jahren

Ich hab keine ClientArea gefunden, ich hab nur etwas wie ClientSize oder ClientRectangle gefunden und mit keinem der beiden Sachen wird es mir korrekt gezeichnet. Mit ClientSize liegt er mir immer noch ungefähr 10 Pixel auserhalb...

lg

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Blue_Dragon,

der Bereich heißt ClientArea, aber wie du richtig erkannt hast, meinte ich ClientSize.Width/Height.

Wenn es immer noch nicht hinhaut, dann möchte ich meinen Hinweis wiederholen, dass Koordinaten immer relativ zur linken oberen Ecke der ClientArea des jeweiligen Controls sind.

Ich würde dir empfehlen, einen einführenden Artikel (oder auch Kapitel in eine Buch) zum Thema GDI zu lesen, um dich mit dem bei GDI verwendeten Koordinatensystem vertraut zu machen.

Vielleicht hilft auch Tutorials für GDI+

herbivore

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 18 Jahren

hi leute!

bin gerade auf noch ein problem gestoßen, also ich zeichne ein weiß gefülltes rechteck auf meine form mit dieser methode:

        private void CreateGraphSpace()
        {
            Graphics g = this.CreateGraphics();
            g.FillRectangle(Brushes.White, 10, 10, this.ClientSize.Width - 20, this.ClientSize.Height - 50);
            g.Dispose();
        }

Ich lege mir den linken oberen und den rechten unteren punkt als variablen an. wenn ich jetzt den rechten unteren punkt so einzeichen lassen will:

            g.DrawLine(Pens.Black, MaxPt.X - 5,MaxPt.Y,MaxPt.X + 5,MaxPt.Y);
            g.DrawLine(Pens.Black, MaxPt.X, MaxPt.Y - 5, MaxPt.X, MaxPt.Y + 5);

dann wird mir dieses kreuz ungefähr 10 pixel über dem untersten rand und 10 pixel von rechten rand des dreiecks eingezeichnet.

meinen maxPt ist so definiert:

        Point MinPt = new Point(10, 10);
        Point MaxPt;
        private void MainForm_Resize(object sender, EventArgs e)
        {
            CreateGraphSpace();
            MaxPt = new Point(this.ClientSize.Width - 20, this.ClientSize.Height - 50);
        }
        private void MainForm_Load(object sender, EventArgs e)
        {
            MaxPt = new Point(this.ClientSize.Width - 20, this.ClientSize.Height - 50);
        }