的編程入門教程之圖形物業(yè)
二、貝賽爾曲線
貝賽爾曲線是用四個(gè)點(diǎn)(不必在一條直線上)繪制的連續(xù)曲線,它可以用下圖來說明:
圖二十四、貝賽爾曲線
為了繪制這個(gè)線條(使用四個(gè)點(diǎn)),編譯器將從第一點(diǎn)到第四個(gè)點(diǎn)畫一條曲線,但是它并不經(jīng)過第二、第三個(gè)點(diǎn),而只是通過彎曲曲線來使中間的側(cè)邊各自接近于第二、第三個(gè)點(diǎn)。例如,上述的貝賽爾曲線使用了如下的四個(gè)點(diǎn)進(jìn)行繪制:
圖二十五、貝賽爾曲線繪制說明圖
為了繪制貝賽爾曲線,Graphics類提供了DrawBezier()方法,它重載了以下版本:
public: void DrawBezier(Pen *pen, Point pt1, Point pt2, Point pt3, Point pt4);
public: void DrawBezier(Pen *pen, PointF pt1, PointF pt2, PointF pt3, PointF pt4);
public: void DrawBezier(Pen *pen, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4);
在此基礎(chǔ)上,繪制貝賽爾曲線時(shí)可以使用四個(gè)Point 或PointF值,也可以使用四個(gè)點(diǎn)的坐標(biāo)值。下面有一個(gè)例子:
private: System::Void Form1_Paint(System::Object * sender,
System::Windows::Forms::PaintEventArgs * e)
{
Pen *penCurrent = new Pen(Color::Blue);
Point pt1 = Point(20, 12), pt2 = Point(88, 246), pt3 = Point(364, 192), pt4 = Point(250, 48);
e-Graphics-DrawBezier(penCurrent, pt1, pt2, pt3, pt4);
}
效果圖如下:
圖二十六、貝賽爾曲線效果圖
三、一系列貝賽爾曲線
Graphics::DrawBezier()方法用來繪制一條貝賽爾曲線,如果想繪制一系列貝賽爾曲線,可以用Graphics::DrawBeziers()方法,它重載了兩個(gè)版本:
public: void DrawBeziers(Pen *pen, Point points[]);
public: void DrawBeziers(Pen *pen, PointF points[]);
DrawBeziers()方法需要一個(gè)Point 或 PointF數(shù)組值。當(dāng)僅僅處理四個(gè)點(diǎn)時(shí),DrawBeziers() 方法與 DrawBezier()很相似。區(qū)別是DrawBezier()處理的是四個(gè)Point 或 PointF的值,DrawBeziers()處理的是Point 或 PointF數(shù)組值。使用DrawBeziers()方法可以繪制出與上面曲線一樣的效果,代碼如下:
private: System::Void Form1_Paint(System::Object * sender,
System::Windows::Forms::PaintEventArgs * e)
{
Pen *penCurrent = new Pen(Color::Blue);
Point pt[] = { Point(20, 12), Point(88, 246), Point(364, 192), Point(250, 48) };
惡人谷 e-Graphics-DrawBeziers(penCurrent, pt);
}
使用DrawBeziers()方法的一個(gè)典型特點(diǎn)是它允許使用7個(gè)Point或PointF值,這里有一個(gè)例子:
private: System::Void Form1_Paint(System::Object * sender,
System::Windows::Forms::PaintEventArgs * e)
{
Pen *penCurrent = new Pen(Color::Blue);
Point pt[] = { Point( 10, 5), Point(340, 60), Point(320, 148), Point(150, 120), Point(24, 220), Point(250, 150), Point(304, 240) };
e-Graphics-DrawBeziers(penCurrent, pt);
}
效果圖如下:
圖二十七、代碼運(yùn)行效果圖
蘭州陰道炎米諾地爾酊治療哪些人群的脫發(fā)
南通婦科哪家好
- 化繁為簡,一枚讀得懂的當(dāng)今世界時(shí)腕表
- 夏日運(yùn)動(dòng)季 選一款動(dòng)感腕表|封面天天見·逛姐出街
- 2022年東南大學(xué)英語語言文學(xué)考研經(jīng)驗(yàn)、參考資料、備考指導(dǎo)
- 吉林市本輪疫情高風(fēng)險(xiǎn)沿海地區(qū)清零
- 肯豆的衣品真是“卡戴珊家之最”,漂亮有型,身材挑不出毛病
- 618值得入手的公開信好物,有TWS、云臺(tái)相機(jī),還有龍蝦人二合一
- 湖北省創(chuàng)立方·大學(xué)生創(chuàng)業(yè)路演周會(huì)走進(jìn)湖北省大學(xué)
- 用過這款洗面奶之后,再也只想換了!
- 李書福恰恰黃章背后:車機(jī)、手機(jī)一體化時(shí)代終將來臨
- 被“誤解”多年的魚,沒有魚頭和里奧,漁民賣的很便宜卻被瞧不起
- 工信部:正在研究儲(chǔ)備工業(yè)穩(wěn)增長后半段政策措施
- 證監(jiān)會(huì):通過視頻會(huì)議等形式 確保發(fā)審委會(huì)議、重組委會(huì)議、上市委會(huì)議正常推進(jìn)