Laden...

Rechteck aus Klasse in Form zeichnen

Erstellt von HApopo vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.289 Views
H
HApopo Themenstarter:in
2 Beiträge seit 2019
vor 4 Jahren
Rechteck aus Klasse in Form zeichnen

Hallo liebes Forum,

ich bin noch relativ neu beim Thema C# aber nicht gänzlich unerfahren im allgemeinen was Programierung an geht.
Ich versuche gerade in einem Test es zu schaffen, dass ich eine Klasse habe in der alle Methoden zur Erstellung bestimmter Steuerelemente usw. erzeugt werden.
Mein Ziel ist es, aus einer x-beliebigen Form diese Methode aufzurufen bzw in jeder x-beliebigen Form wie im Beispiel ein Rechteck zu zeichnen.

Meine Form1:


using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Test
{
    public partial class MainMenu : Form
    {
        CostumForms costumForms = new CostumForms();
        public MainMenu()
        {
            InitializeComponent();
            this.WindowState = FormWindowState.Maximized;
            costumForms.CreateRectangle("Rechteck1", 0, 0, 100, 200, 200, 100, 100);
         }
     }
}

und meine CostumForms.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Windows.Forms;


namespace Test
{
    public class CostumForms
    {

       private Microsoft.VisualBasic.PowerPacks.RectangleShape rectangleShape1;
       
       public void CreateRectangle(string RecName, int LocX, int LocY, int SizeWidth, int SizeHeigh, int FColor01, int FColor02, int FColor03)
       {
            this.rectangleShape1 = new Microsoft.VisualBasic.PowerPacks.RectangleShape();
            this.rectangleShape1.Location = new System.Drawing.Point(LocX, LocY);
            this.rectangleShape1.Name = RecName;
            this.rectangleShape1.Size = new System.Drawing.Size(SizeWidth, SizeHeigh);
            this.rectangleShape1.BackColor = Color.FromArgb(FColor01, FColor02, FColor03);
        }
    }
}


Es kommt keine Fehlermeldung, es zeichnet mir aber auch kein Rechteck 🙁
Für die meisten wird es sicherlich einfach sein, vielleicht stehe ich auch nur auf dem Schlauch.. aber nach gefühlten 20h googlen komme ich nicht weiter.

Da bald Weihnachten ist, hoffe ich das mir jemand da weiter helfen kann.

Viele Grüße und einen fleißigen Nikolaus schon einmal vorab 👍
Hapopo

1.029 Beiträge seit 2010
vor 4 Jahren

Hi,

RectanlageShape ist ein Control, dass der Form bekannt gemacht werden muss - üblicherweise geschieht das über ein Form.Controls.Add(x); - würde dir empfehlen, dir einfach jeweils den generierten Beispielcode des Designers als Vorlage zu nehmen.

H
HApopo Themenstarter:in
2 Beiträge seit 2019
vor 4 Jahren

Leider funktioniert es scheinbar nicht mit controlls.add.
Ich bekomme bei dem Versuch die Fehlermeldung, dass man VisualPowerPack nicht mit Windows.Forms konvertieren kann.
Davon abgesehen, hatte ich es auch mit der Windows Forms Methode versucht Rectangle. Allerdings scheitere ich immer kläglich an dem Versuch, außerhalb der Klasse aufzurufen.
Ich möchte der Funktion quasi übergeben in welcher Form das Rechteck entstehen soll.

1.029 Beiträge seit 2010
vor 4 Jahren

Hi,

wärst du so freundlich die richtige Fehlermeldung hier rein zu kopieren?

Habe wenig Lust darauf das Ganze nachzustellen nur um eine nützliche Fehlermeldung zu sehen 😉

LG

Edit: Auf Basis der MSDN sieht die Sache etwas umfangreicher aus - um Shapes verwenden zu können - braucht man scheinbar einen ShapeContainer - vermutlich ist nur dieser tatsächlich ein Control und könnte der Form entsprechend hinzugefügt werden.

Insofern noch einmal mein Tipp: Mach eine Beispielform - schau was der Designer kreiert, damit es funktioniert - und baue dies entsprechend in deine Methode(n) ein.

5.658 Beiträge seit 2006
vor 4 Jahren

Rechtecke kann man auch ohne zusätzliche Controls oder Container zeichnen: [Tutorial] Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox)

Weeks of programming can save you hours of planning