HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Bezier görbe rajzolása háttér kifestéssel


Példaprogram letöltése

6599 bájt

Ebben a cikkben pédát láthatunk arra, hogy miként rajzolhatunk Bezier görbét, valamint arra is fény derül, hogy egy Bezier görbe által határolt területet miként festhetünk ki egy adott háttérrel, mely lehet egy egyszerű szín, de akár egy tetszőleges színátmenet is.

A rajzoláshoz felhasználjuk a Form-unk Paint eseményét. Itt a paraméterként kapott PaintEventArgs típusú változóban rendelkezésünkre áll a Graphics osztály egy példánya, melyet felhasználhatunk a rajzoláshoz. Ez a Graphics osztály tartalmazza a DrawBezier függvényt, melynek segítségével egyszerűen rajzolhatunk Bezier görbéket.
Első paraméterként egy Pen objektumot kell megadnunk, mely a görbe rajzolás vonalának tulajdonságait határozza meg.
Egy-egy függvényhívással a görbe egy-egy ívét tudjuk megrajzolni úgy, hogy a görbe két végpontját és hozzájuk tartozó két segédpont koordinátáját adjuk át. A függvénynek három változata is van, melyeknél az első Pen típusú paraméter megegyezik. Eltérés csak a két végpont és segédpontok koordinátáinak megadási lehetőségénél van. Egyik változatnál fel kell sorolnunk az x, y koordinátákat float típusban, a másiknál ezeket megadhatjuk Point típusban, míg a harmadiknál PointF típusban.
A megadásnál az első x, y pár a görbe kezdőpontja, majd ezt követi a két segédpont koordinátája végül a görbe végpontja.
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
    Dim g As Graphics = e.Graphics
    Dim p As Pen = New Pen(Color.Red, 3)
    g.DrawBezier(p, 10, 10, 10, 200, 200, 10, 200, 200)
    g.DrawBezier(p, 10, 10, 10, 200, 10, 200, 200, 200)
Ha görbe által megadott területtel is szeretnénk műveletet végezni, mint például a háttér kitöltése, akkor szükségünk lesz a GraphicsPath osztály használatára. Ennek segítségével létrehozhatunk egy olyan grafikai objektumot, melyet egy egységként kezelhetünk függetlenül attól, hogy rajzoláskor milyen eszközöket használtunk. Így például rajzolhatunk vegyesen görbét, egyenes vonalakat, téglalapot, bármit, majd a kész grafikát egy egységként kiszínezhetjük.
Ehhez létrehozunk egy GraphicsPath osztályt, majd egy LinearGradientBrush ecsetet, mellyel egy lineáris színátmenetet adhatunk meg kitöltő háttérként. A GraphicsPath osztály rendelkezik egy AddBezier függvénnyel, mellyel egy Bezier görbe adható hozzá az aktuális grafikánkhoz. Ennek paraméterezése megegyezik az előbbi DrawBezier-el, annyi különbséggel, hogy az első paraméter elmarad.
Amikor az AddBezier-t használjuk, akkor azonban a rajz még nem jelenik meg a képernyőn. Ez nyilván csak akkor lesz látható, mikor már minden grafikai objektumot hozzáadtunk a GraphicsPath-hoz. Megjeleníteni a kész ábrát például a Graphics osztály FillPath függvényének hívásával lehet, mely egyből színezi is a hátteret az első paramétereként megadott ecsettel. A második paraméterként a kirajzolandó GraphicsPath osztály változóját kell megadnunk.
    Dim gp As GraphicsPath = New GraphicsPath()
    Dim rect As Rectangle = New Rectangle(210, 10, 400, 400)
    Dim br As LinearGradientBrush = New LinearGradientBrush(rect, Color.Red, Color.White, LinearGradientMode.BackwardDiagonal)
    gp.AddBezier(210, 10, 210, 200, 400, 10, 400, 200)
    gp.AddBezier(210, 10, 210, 200, 210, 200, 400, 200)
    g.FillPath(br, gp)
    g.DrawBezier(p, 10, 10, 10, 200, 10, 200, 200, 200)
End Sub

Cikksorozat



Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |