Hallo Leute
Ich habe ein mit Paint gezeichnetes Bild angehängt.
Da wird gezeigt was ich gezeichnet brauche.
Nähmlich die Hinterwand meines Controls.
So siehts aus. Paths? aber wie? ich muss die Linien zeichnen können und das ausfüllen können.
Danke.
Hallo v.wochnik,
DrawLine, DrawArc, DrawEllipse, FillRectangle, FillEllipse
herbivore
Nein. Das kann ich ja auch. hab ich auch gemeckt.
Aber: ich will den gesammten Inhalt der Backwall auch mit einem Farbverlauf versehen.
Wie gestaltet sich das ganze mit Paths?
Du willst wissen ob du in einem Path mit verschiedenen Brushes oder Pens zeichnen kannst?
Ich denke so wie du das meinst musst du mehrere GraphicsPath objekte benutzen.
Hi,
Wie gestaltet sich das ganze mit Paths?
Meinst Du mit GraphicsPath? Wenn ja, dann erstelle doch einfach ein GraphicsPath-Objekt. Zeichne mittel den von herbivore genannten Methoden auf das GraphicsPath Objekt. Anschließend kannst Du mittels FillPath eines Graphic-Ojekts mit etwas füllen.
Gruß, DaMoe
Haa! ich habe es! (fast)
Deshalb benötige ich mal schnell eure Hilfe.
GraphicsPath gp = new GraphicsPath();
gp.AddArc(50, 50, 100, 100, 180, 180);
gp.AddArc(50, 150, 100, 100, 0, -180);
e.Graphics.DrawPath(new Pen(Color.Black), gp);
So, das funzt auch, nur dass der Graphics-Path nicht geschlosen ist.
Kann man irgendwo einstellen, ob der geschlossen ist?
So, jetzt kann ich drawen, fillen und alles feddich!
Aber noch ein prob dazu:
Ich wollte eigentlich so machen, dass ein Vertikaler Farbverlauf statt der üblichen Füllfarbe da ist.
Mit linearGradientBrush kann ich aber nur Color1 -> Color2-Verläufe machen.
Ich brauche aber Color1 -> Color2 -> Color1.
Was soll ich da machen???
Danke leute!
ja, das hatte ich auch schon in Erwägung gezogen, aber:
Dann muss ich ja auch noch die andern Pfade teilen.
Ich habe einen großen Pfad, wie füll ich denn die eine Hälfte mit x und die andere mit y???
Hallo v.wochnik,
Graphics.IntersectClip
herbivore
Hallo v.wochnik,
vor dem Zeichnen beschränkst du damit den Zeichenbereich auf den Teil des Path, den du gerade zeichnen willst.
herbivore
Original von v.wochnik
Mit linearGradientBrush kann ich aber nur Color1 -> Color2-Verläufe machen.
Naja das ist nicht ganz richtig.
Bsp:
private void Form1_Paint(object sender, PaintEventArgs e)
{
Rectangle rect = new Rectangle(10,10,100,400);
Rectangle rect2 = new Rectangle(10,10, 100, 200);
using (LinearGradientBrush lgb = new LinearGradientBrush(
rect2, Color.White, Color.Blue, 90, false))
{
lgb.WrapMode = WrapMode.TileFlipXY;
e.Graphics.FillRectangle(lgb, rect);
}
rect.X += 110;
using (LinearGradientBrush lgb = new LinearGradientBrush(
rect, Color.White, Color.Blue, 90, false))
{
lgb.SetBlendTriangularShape(.5f, 1);
e.Graphics.FillRectangle(lgb, rect);
}
rect.X += 110;
using (LinearGradientBrush lgb = new LinearGradientBrush(
rect, Color.White, Color.Blue, 90, false))
{
//Gauss
lgb.SetSigmaBellShape(.5f, 1);
e.Graphics.FillRectangle(lgb, rect);
}
rect.X += 110;
using (LinearGradientBrush lgb = new LinearGradientBrush(
rect, Color.Red, Color.Blue, 90, false))
{
//free gradient rainbow
ColorBlend blend = new ColorBlend();
blend.Colors = new Color[]{Color.Red, Color.Yellow, Color.Lime, Color.Blue,Color.Violet};
blend.Positions = new float[]{0,.25f,.5f,.75f,1};
lgb.InterpolationColors = blend;
e.Graphics.FillRectangle(lgb, rect);
}
}