Hallo zusammen,
ich habe mich heute mal in (von mir) unerforschtes Gebiet begeben müssen.
Ich entwickle einen Editor ähnlich dem in Visual Studio mit dem die Benutzer für eine Anwendung ihre Benutzeroberfläche selber gestalten können. (Textboxen, Komboboxen, usw.)
Nun sollen sie die Möglichkeit erhalten einen Rahmen (Panel-Control) einzufügen und diesem ein gewünschtes Aussehen verleihen. Möglich sollen hier zb. Rechteck(standard), Quadrat, Kreis, Ellipse und noch ein paar sein. Um das zu erreichen überschreibe ich die OnPaint-Methode vom Panel. Aber irgendwas mache ich falsch. Das OnPaint wird fehlerfrei abgeschlossen, aber visuell ändert sich nichts im Editor.
Das hier ist mal ein Ausriss aus meinem aktuellen Code:
[highlight=c#]
public enum Rahmenart
{
Rechteck = 0,
Quadrat,
Ellipse,
Kreis,
Gerundetes_Rechteck,
Gerundetes_Quadrat
}
[DisplayName("Rahmenart")]
[Category("Allgemein")]
public Rahmenart Shape
{
get { return (Rahmenart)shape; }
set
{
shape = (int)value;
((CtrRahmen)bezugscontrol).Refresh();
}
}
protected override void OnPaint(PaintEventArgs e)
{
switch ((int)Shape)
{
case 0:
e.Graphics.DrawRectangle(new Pen(Rahmenfarbe), this.Top, this.Left, this.Width, this.Height);
break;
case 1:
e.Graphics.DrawRectangle(new Pen(Rahmenfarbe), this.Top, this.Left, this.Height, this.Height);
break;
case 2:
e.Graphics.DrawEllipse(new Pen(Rahmenfarbe), this.Top, this.Left, this.Width, this.Height);
break;
default:
break;
}
base.OnPaint(e);
}
[/highlight]
Was mach ich falsch?
Danke schon mal
Andreas
ich habe mich heute mal in (von mir) unerforschtes Gebiet begeben müssen.
Ich entwickle einen Editor ähnlich dem in Visual Studio mit dem die Benutzer für eine Anwendung ihre Benutzeroberfläche selber gestalten können. (Textboxen, Komboboxen, usw.)
Nun sollen sie die Möglichkeit erhalten einen Rahmen (Panel-Control) einzufügen und diesem ein gewünschtes Aussehen verleihen. Möglich sollen hier zb. Rechteck(standard), Quadrat, Kreis, Ellipse und noch ein paar sein. Um das zu erreichen überschreibe ich die OnPaint-Methode vom Panel. Aber irgendwas mache ich falsch. Das OnPaint wird fehlerfrei abgeschlossen, aber visuell ändert sich nichts im Editor.
Das hier ist mal ein Ausriss aus meinem aktuellen Code:
[highlight=c#]
public enum Rahmenart
{
Rechteck = 0,
Quadrat,
Ellipse,
Kreis,
Gerundetes_Rechteck,
Gerundetes_Quadrat
}
[DisplayName("Rahmenart")]
[Category("Allgemein")]
public Rahmenart Shape
{
get { return (Rahmenart)shape; }
set
{
shape = (int)value;
((CtrRahmen)bezugscontrol).Refresh();
}
}
protected override void OnPaint(PaintEventArgs e)
{
switch ((int)Shape)
{
case 0:
e.Graphics.DrawRectangle(new Pen(Rahmenfarbe), this.Top, this.Left, this.Width, this.Height);
break;
case 1:
e.Graphics.DrawRectangle(new Pen(Rahmenfarbe), this.Top, this.Left, this.Height, this.Height);
break;
case 2:
e.Graphics.DrawEllipse(new Pen(Rahmenfarbe), this.Top, this.Left, this.Width, this.Height);
break;
default:
break;
}
base.OnPaint(e);
}
[/highlight]
Was mach ich falsch?
Danke schon mal
Andreas
Comment