C# - DrawCurve és DrawClosedCurve függvények

Graphics osztály 3. rész

forráskód letöltése
Múlt héten bemutatott DrawBezier függvény segítségével egyszerűen szerkeszthettünk, rajzolhattunk görbéket. Mostani cikkünkben a görbe rajzolás egy másik módját mutatjuk be. Itt úgy írhatunk le egy görbét, hogy megadjuk tetszőleges számú pontnak a koordinátáját. A görbe úgy kerül kirajzolásra, hogy minden megadott ponton áthalad abba a sorrendben, ahogy megadtuk azokat.
Ehhez a módszerhez két függvény áll rendelkezésünkre: a DrawCurve és DrawClosedCurve, melyek között a különbség csak annyi, hogy a második mindig zárt alakzatot rajzol úgy, hogy a kezdőpontot összeköti a végponttal.
DrawCurve
Osztály: System.Drawing.Graphics
public void DrawCurve(
Pen pen,
Point[] points
);
A DrawCurve függvénnyel úgy rajzolhatunk meg egy görbét, hogy megadjuk azokat a pontokat egy tömbbe, melyeken szeretnénk, hogy a görbe vonala áthaladjon.
Paraméterek
Pen pen
A rajzoláshoz használt ceruzát adhatjuk meg a pen paraméterben.
Point[] points
A points paraméterben kell megadnunk azt a tömböt, mely tartalmazza azon koordináta pontokat, melyeken a görbének át kell haladnia.
Megjegyzés
A görbe kirajzolásához használt feszesség értéke 0.5.
DrawCurve
Osztály: System.Drawing.Graphics
public void DrawCurve(
Pen pen,
PointF[] points
);
A DrawCurve függvénnyel úgy rajzolhatunk meg egy görbét, hogy megadjuk azokat a pontokat egy tömbbe, melyeken szeretnénk, hogy a görbe vonala áthaladjon.
Paraméterek
Pen pen
A rajzoláshoz használt ceruzát adhatjuk meg a pen paraméterben.
PointF[] points
A points paraméterben kell megadnunk azt a tömböt, mely tartalmazza azon koordináta pontokat, melyeken a görbének át kell haladnia.
Megjegyzés
A görbe kirajzolásához használt feszesség értéke 0.5.
DrawCurve
Osztály: System.Drawing.Graphics
public void DrawCurve(
Pen pen,
Point[] points,
float tension
);
A DrawCurve függvénnyel úgy rajzolhatunk meg egy görbét, hogy megadjuk azokat a pontokat egy tömbbe, melyeken szeretnénk, hogy a görbe vonala áthaladjon.
Paraméterek
Pen pen
A rajzoláshoz használt ceruzát adhatjuk meg a pen paraméterben.
Point[] points
A points paraméterben kell megadnunk azt a tömböt, mely tartalmazza azon koordináta pontokat, melyeken a görbének át kell haladnia.
float tension
A görbe feszességének értéke, mely 0 és 1 közötti érték lehet. Nulla esetén a megadott pontok egyenes vonallakkal lesznek összekötve, míg nullánál minél nagyobb szám esetén a görbe íve is egyre nagyobb lesz.
DrawCurve
Osztály: System.Drawing.Graphics
public void DrawCurve(
Pen pen,
PointF[] points,
float tension
);
A DrawCurve függvénnyel úgy rajzolhatunk meg egy görbét, hogy megadjuk azokat a pontokat egy tömbbe, melyeken szeretnénk, hogy a görbe vonala áthaladjon.
Paraméterek
Pen pen
A rajzoláshoz használt ceruzát adhatjuk meg a pen paraméterben.
PointF[] points
A points paraméterben kell megadnunk azt a tömböt, mely tartalmazza azon koordináta pontokat, melyeken a görbének át kell haladnia.
float tension
A görbe feszességének értéke, mely 0 és 1 közötti érték lehet. Nulla esetén a megadott pontok egyenes vonallakkal lesznek összekötve, míg nullánál minél nagyobb szám esetén a görbe íve is egyre nagyobb lesz.
DrawCurve
Osztály: System.Drawing.Graphics
public void DrawCurve(
Pen pen,
PointF[] points,
int offset,
int numberOfSegments
);
A DrawCurve függvénnyel úgy rajzolhatunk meg egy görbét, hogy megadjuk azokat a pontokat egy tömbbe, melyeken szeretnénk, hogy a görbe vonala áthaladjon.
Paraméterek
Pen pen
A rajzoláshoz használt ceruzát adhatjuk meg a pen paraméterben.
PointF[] points
A points paraméterben kell megadnunk azt a tömböt, mely tartalmazza azon koordináta pontokat, melyeken a görbének át kell haladnia.
int offset
Az offset paraméterben megadott szám határozza meg, hogy points tömb hányadik elemétől kezdve lesznek felhasználva a koordináták.
int numberOfSegments
A numberOfSegments paraméterben megadott szám határozza meg, hogy a points tömbből hány elem lesz felhasználva a rajzoláshoz.
Megjegyzés
A görbe kirajzolásához használt feszesség értéke 0.5.
DrawCurve
Osztály: System.Drawing.Graphics
public void DrawCurve(
Pen pen,
Point[] points,
int offset,
int numberOfSegments,
float tension
);
A DrawCurve függvénnyel úgy rajzolhatunk meg egy görbét, hogy megadjuk azokat a pontokat egy tömbbe, melyeken szeretnénk, hogy a görbe vonala áthaladjon.
Paraméterek
Pen pen
A rajzoláshoz használt ceruzát adhatjuk meg a pen paraméterben.
Point[] points
A points paraméterben kell megadnunk azt a tömböt, mely tartalmazza azon koordináta pontokat, melyeken a görbének át kell haladnia.
int offset
Az offset paraméterben megadott szám határozza meg, hogy a points tömb hányadik elemétől kezdve lesznek felhasználva a koordináták.
int numberOfSegments
A numberOfSegments paraméterben megadott szám határozza meg, hogy a points tömbből hány elem lesz felhasználva a rajzoláshoz.
float tension
A görbe feszességének értéke, mely 0 és 1 közötti érték lehet. Nulla esetén a megadott pontok egyenes vonallakkal lesznek összekötve, míg nullánál minél nagyobb szám esetén a görbe íve is egyre nagyobb lesz.
DrawCurve
Osztály: System.Drawing.Graphics
public void DrawCurve(
Pen pen,
PointF[] points,
int offset,
int numberOfSegments,
float tension
);
A DrawCurve függvénnyel úgy rajzolhatunk meg egy görbét, hogy megadjuk azokat a pontokat egy tömbbe, melyeken szeretnénk, hogy a görbe vonala áthaladjon.
Paraméterek
Pen pen
A rajzoláshoz használt ceruzát adhatjuk meg a pen paraméterben.
PointF[] points
A points paraméterben kell megadnunk azt a tömböt, mely tartalmazza azon koordináta pontokat, melyeken a görbének át kell haladnia.
int offset
Az offset paraméterben megadott szám határozza meg, hogy points tömb hányadik elemétől kezdve lesznek felhasználva a koordináták.
int numberOfSegments
A numberOfSegments paraméterben megadott szám határozza meg, hogy a points tömbből hány elem lesz felhasználva a rajzoláshoz.
float tension
A görbe feszességének értéke, mely 0 és 1 közötti érték lehet. Nulla esetén a megadott pontok egyenes vonallakkal lesznek összekötve, míg nullánál minél nagyobb szám esetén a görbe íve is egyre nagyobb lesz.
DrawClosedCurve
Osztály: System.Drawing.Graphics
public void DrawClosedCurve(
Pen pen,
Point[] points
);
A DrawClosedCurve függvénnyel úgy rajzolhatunk meg egy görbét, hogy megadjuk azokat a pontokat egy tömbbe, melyeken szeretnénk, hogy a görbe vonala áthaladjon. A megrajzolt görbe kezdő és végpontja is összekötésre kerül, így mindig egy zárt alakzatot kapunk.
Paraméterek
Pen pen
A rajzoláshoz használt ceruzát adhatjuk meg a pen paraméterben.
Point[] points
A points paraméterben kell megadnunk azt a tömböt, mely tartalmazza azon koordináta pontokat, melyeken a görbének át kell haladnia.
Megjegyzés
A görbe kirajzolásához használt feszesség értéke 0.5.
DrawClosedCurve
Osztály: System.Drawing.Graphics
public void DrawClosedCurve(
Pen pen,
PointF[] points
);
A DrawClosedCurve függvénnyel úgy rajzolhatunk meg egy görbét, hogy megadjuk azokat a pontokat egy tömbbe, melyeken szeretnénk, hogy a görbe vonala áthaladjon. A megrajzolt görbe kezdő és végpontja is összekötésre kerül, így mindig egy zárt alakzatot kapunk.
Paraméterek
Pen pen
A rajzoláshoz használt ceruzát adhatjuk meg a pen paraméterben.
PointF[] points
A points paraméterben kell megadnunk azt a tömböt, mely tartalmazza azon koordináta pontokat, melyeken a görbének át kell haladnia.
Megjegyzés
A görbe kirajzolásához használt feszesség értéke 0.5.
DrawClosedCurve
Osztály: System.Drawing.Graphics
public void DrawClosedCurve(
Pen pen,
Point[] points,
float tension,
FillMode fillmode
);
A DrawClosedCurve függvénnyel úgy rajzolhatunk meg egy görbét, hogy megadjuk azokat a pontokat egy tömbbe, melyeken szeretnénk, hogy a görbe vonala áthaladjon. A megrajzolt görbe kezdő és végpontja is összekötésre kerül, így mindig egy zárt alakzatot kapunk.
Paraméterek
Pen pen
A rajzoláshoz használt ceruzát adhatjuk meg a pen paraméterben.
Point[] points
A points paraméterben kell megadnunk azt a tömböt, mely tartalmazza azon koordináta pontokat, melyeken a görbének át kell haladnia.
float tension
A görbe feszességének értéke, mely 0 és 1 közötti érték lehet. Nulla esetén a megadott pontok egyenes vonallakkal lesznek összekötve, míg nullánál minél nagyobb szám esetén a görbe íve is egyre nagyobb lesz.
FillMode fillmode
Rajzolás módja, mely Alternate, vagy Winding értéket kaphat.
DrawClosedCurve
Osztály: System.Drawing.Graphics
public void DrawClosedCurve(
Pen pen,
PointF[] points,
float tension,
FillMode fillmode
);
A DrawClosedCurve függvénnyel úgy rajzolhatunk meg egy görbét, hogy megadjuk azokat a pontokat egy tömbbe, melyeken szeretnénk, hogy a görbe vonala áthaladjon. A megrajzolt görbe kezdő és végpontja is összekötésre kerül, így mindig egy zárt alakzatot kapunk.
Paraméterek
Pen pen
A rajzoláshoz használt ceruzát adhatjuk meg a pen paraméterben.
PointF[] points
A points paraméterben kell megadnunk azt a tömböt, mely tartalmazza azon koordináta pontokat, melyeken a görbének át kell haladnia.
float tension
A görbe feszességének értéke, mely 0 és 1 közötti érték lehet. Nulla esetén a megadott pontok egyenes vonallakkal lesznek összekötve, míg nullánál minél nagyobb szám esetén a görbe íve is egyre nagyobb lesz.
FillMode fillmode
Rajzolás módja, mely Alternate, vagy Winding értéket kaphat.
A példaprogram
Görbék kirajzolásához tehát szükségünk lesz egy Pen objektumra, melyben leírjuk, hogy milyen tulajdonságú ceruzával szeretnénk rajzolni, valamint egy tömbre, melyben a szükséges koordinátákat adjuk meg.
    private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
      Graphics g = e.Graphics;
      Pen p = new Pen(Color.Green, 2);
A görbe kirajzolásához felhasználjuk a Form-on lévő két TrackBar aktuális értéket. Az elsővel azt határozhatjuk meg, hogy a görbe rajzolásánál hány elem kerüljön felhasználásra a tömbből, míg a másodikkal a görbe feszességét adhatjuk meg.
      Point[] po = {new Point(10, 10), new Point(200, 40), new Point(40, 140), new Point(210, 310)};
      g.DrawCurve(p, po, 0, trackBar1.Value, (float)trackBar2.Value / 100);
Zárt görbe rajzolásához a DrawClosedCurve függvényt alkalmazzuk. Ezt a műveletet is elvégeztethetnénk a DrawCurve függvénnyel úgy, hogy ott még egy elemet fel kellene vennünk a koordinátákat tartalmazó tömbbe, melynek értéke egyezne a tömb első elemével.
      Point[] po2 = {new Point(250, 100), new Point(200, 140), new Point(270, 220), new Point(240, 240)};
      g.DrawClosedCurve(p, po2, (float)trackBar2.Value / 100, FillMode.Winding);
      ...
    }

Graphics osztály cikksorozat