Laden...

Zeichenhilfe

Erstellt von v.wochnik vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.054 Views
V
v.wochnik Themenstarter:in
280 Beiträge seit 2007
vor 16 Jahren
Zeichenhilfe

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.

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo v.wochnik,

DrawLine, DrawArc, DrawEllipse, FillRectangle, FillEllipse

herbivore

V
v.wochnik Themenstarter:in
280 Beiträge seit 2007
vor 16 Jahren

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?

2.760 Beiträge seit 2006
vor 16 Jahren

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.

D
500 Beiträge seit 2007
vor 16 Jahren

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

V
v.wochnik Themenstarter:in
280 Beiträge seit 2007
vor 16 Jahren

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?

V
v.wochnik Themenstarter:in
280 Beiträge seit 2007
vor 16 Jahren

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!

Gelöschter Account
vor 16 Jahren

* KOPF VOR DIE WAND SCHLAG *

wenn du ein Color1 -> Color2 -> Color1 path brauchst mach doch einfach 2:

Color1 -> Color2 , Color2 -> Color1

MfG janismac

V
v.wochnik Themenstarter:in
280 Beiträge seit 2007
vor 16 Jahren

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???

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo v.wochnik,

Graphics.IntersectClip

herbivore

V
v.wochnik Themenstarter:in
280 Beiträge seit 2007
vor 16 Jahren

@herbivor: Wie soll ich denn das einsetzen? wie?

Danke.

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo v.wochnik,

vor dem Zeichnen beschränkst du damit den Zeichenbereich auf den Teil des Path, den du gerade zeichnen willst.

herbivore

V
v.wochnik Themenstarter:in
280 Beiträge seit 2007
vor 16 Jahren

Ach, danke!

I
1.739 Beiträge seit 2005
vor 16 Jahren

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);
    }

}