Laden...

Wie kann ich einen trapetzförmigen Button erstellen?

Erstellt von Dominicano vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.080 Views
D
Dominicano Themenstarter:in
23 Beiträge seit 2007
vor 5 Jahren

Hallo

Ich versuche auch gerade einen trapetzförmigen Button zu erstellen, aber es klappt nicht so, wie es hier und in anderen Foren erklärt wird.

            case 2:
                    button.Location = new Point((int)ScaleFrontPoint(myHouseObjects.p501).X + 1, (int)ScaleFrontPoint(myHouseObjects.p501).Y + 1);
                    button.Size = new Size(new Point((int)(ScaleFrontPoint(myHouseObjects.p506).X - ScaleFrontPoint(myHouseObjects.p505).X - 1), (int)(ScaleFrontPoint(myHouseObjects.p505).Y - ScaleFrontPoint(myHouseObjects.p501).Y - 1)));
                    button.Text = "Obergeschoss";
                    button.Name = "Obergeschoss";
                    //MessageBox.Show(button.Region.ToString());
                    return button;
                case 3:
                    button.Location = new Point((int)ScaleFrontPoint(myHouseObjects.p509).X + 1, (int)ScaleFrontPoint(myHouseObjects.p512).Y + 1);
                    button.Size = new Size(new Point((int)(ScaleFrontPoint(myHouseObjects.p510).X - ScaleFrontPoint(myHouseObjects.p509).X-1), (int)(ScaleFrontPoint(myHouseObjects.p509).Y - ScaleFrontPoint(myHouseObjects.p512).Y-1)));
                    PointF[] points = { ScaleFrontPoint(myHouseObjects.p509), ScaleFrontPoint(myHouseObjects.p510), ScaleFrontPoint(myHouseObjects.p511), ScaleFrontPoint(myHouseObjects.p512) };
                    GraphicsPath gPath = new GraphicsPath(FillMode.Alternate);
//                    gPath.AddRectangle(new Rectangle(button.Location,button.Size));
                    gPath.AddPolygon(points);
                    button.Region = new Region(gPath);
                    button.Text = "Dach";
                    button.Name = "Dach";
                    return button;

"case 2:"benötigt keine Region, aber ob Rechteck oder Polygon, die Region in "case 3:" wird nicht angenommen, wenn ich die Region ausklammere wird an der richtigen Position ein rechteckiger Button angezeigt.
Hat jemand eine Idee, woran es liegt?

5.657 Beiträge seit 2006
vor 5 Jahren

Hi Dominicano,

in der Doku zu Control.Region findest du ein Beispiel. Ansonsten müßtest du mal debuggen, und schauen, ob die Positionsangaben wie ScaleFrontPoint(myHouseObjects.p509).Y richtig berechnet werden.

Ich würde diese Anforderung wahrscheinlich eher über [Tutorial] Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox) umsetzen. Oder einfach einen Button mit einem Trapez-Icon erstellen.

Weeks of programming can save you hours of planning

D
Dominicano Themenstarter:in
23 Beiträge seit 2007
vor 5 Jahren

Ok, ich habe den Fehler gefunden:
Button.Location und Region haben NICHT die selben Koordinaten!
Button.Location geht vom untergeordnetem Control (Panel oder Form) aus, auf dem der Button angeordnet ist. Region geht vom Button aus! Also muss die Region bei 0,0 starten und nicht bei Bsw. 750, sonst ist sie ausßerhalb des Fensters.