Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wie kann ich einen trapetzförmigen Button erstellen?
Dominicano
myCSharp.de - Member



Dabei seit:
Beiträge: 23
Herkunft: Dajabon

Themenstarter:

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5.655
Herkunft: Leipzig

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Dominicano
myCSharp.de - Member



Dabei seit:
Beiträge: 23
Herkunft: Dajabon

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers