亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

解析在Direct2D中畫Bezier曲線的實現方法

2020-01-26 16:11:50
字體:
來源:轉載
供稿:網友
Direct2D通過ID2D1RenderTarget接口支持基本圖元(直線,矩形,圓角矩形,橢圓等)的繪制,然而,此接口并未提供對曲線繪制的直接支持。因此,想要使用Direct2D繪制一段通過指定點的曲線,比如Bezier曲線,必須借助于DrawGeometry()方法間接實現。需要通過一定的算法,將指定點轉換為定義Path的控制點。幸運的是,codproject上已經有人做了這項工作,給出了相應的轉換算法,并給出了C#版的實現:
Draw a Smooth Curve through a Set of 2D Points with Bezier Primitives
C#的代碼可以很容易的轉換成C++版本的,下面是我轉換的一個用于Direct2D的繪制Bezier曲線的C++函數:
復制代碼 代碼如下:

 /// <summary>
 /// Refer to : http://www.codeproject.com/KB/graphics/BezierSpline.aspx
 /// Solves a tridiagonal system for one of coordinates (x or y) of first Bezier control points.
 /// </summary>
 /// <param name="rhs">Right hand side vector.</param>
 /// <param name="x">Solution vector.</param>
 void GetFirstControlPoints(
     __in const std::vector<FLOAT>& rhs,
     __out std::vector<FLOAT>& x )
 {
     ATLASSERT(rhs.size()==x.size());
     int n = rhs.size();
     std::vector<FLOAT> tmp(n);    // Temp workspace.

     FLOAT b = 2.0f;
     x[0] = rhs[0] / b;
     for (int i = 1; i < n; i++) // Decomposition and forward substitution.
     {
         tmp[i] = 1 / b;
         b = (i < n-1 ? 4.0f : 3.5f) - tmp[i];
         x[i] = (rhs[i] - x[i-1]) / b;
     }
     for (int i = 1; i < n; i++)
     {
         x[n-i-1] -= tmp[n-i] * x[n-i]; // Back substitution.
     }
 }

 /// <summary>
 /// Refer to : http://www.codeproject.com/KB/graphics/BezierSpline.aspx
 /// Get open-ended Bezier Spline Control Points.
 /// </summary>
 /// <param name="knots">Input Knot Bezier spline points.</param>
 /// <param name="firstCtrlPt">Output First Control points array of knots.size()-1 length.</param>
 /// <param name="secondCtrlPt">Output Second Control points array of knots.size()-1 length.</param>
 void GetCurveControlPoints(
     __in const std::vector<D2D1_POINT_2F>& knots,
     __out std::vector<D2D1_POINT_2F>& firstCtrlPt,
     __out std::vector<D2D1_POINT_2F>& secondCtrlPt )
 {
     ATLASSERT( (firstCtrlPt.size()==secondCtrlPt.size())
         && (knots.size()==firstCtrlPt.size()+1) );

     int n = knots.size()-1;
     ATLASSERT(n>=1);

     if (n == 1)
     {
         // Special case: Bezier curve should be a straight line.
         // 3P1 = 2P0 + P3
         firstCtrlPt[0].x = (2 * knots[0].x + knots[1].x) / 3.0f;
         firstCtrlPt[0].y = (2 * knots[0].y + knots[1].y) / 3.0f;

         // P2 = 2P1 亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一区二区三区成人在线视频精品| 亚洲天堂第二页| 日本久久久久久久久久久| 亚洲免费av电影| 欧美性猛交丰臀xxxxx网站| 国产性猛交xxxx免费看久久| 亚洲美女www午夜| 久久久伊人日本| 亚洲欧洲日本专区| 亚洲精品电影在线| 国产精品pans私拍| 欧美亚洲成人网| 亚洲第一中文字幕在线观看| 国产精品电影久久久久电影网| 亚洲专区在线视频| 久久亚洲精品网站| 理论片在线不卡免费观看| 久久久在线免费观看| 亚洲日本成人网| 久久久视频精品| 成人av番号网| 日韩精品在线免费观看| 久久精品一区中文字幕| 日韩欧亚中文在线| 国产精品久久久| 国产精品小说在线| 97碰在线观看| 日韩美女在线播放| 欧美精品久久久久| 国产欧美va欧美va香蕉在线| 久久久久久久久久av| 国产91露脸中文字幕在线| 日韩经典一区二区三区| 亚洲国产成人精品久久久国产成人一区| 91丨九色丨国产在线| 欧美最猛黑人xxxx黑人猛叫黄| 欧美壮男野外gaytube| 久久在线免费视频| 国产精品极品尤物在线观看| 精品国产一区二区三区久久狼黑人| 色综合色综合久久综合频道88| 国产一区二区三区免费视频| 免费91麻豆精品国产自产在线观看| 欧美日韩成人在线观看| 国内揄拍国内精品少妇国语| 91久久久久久久久久| 欧美高清视频免费观看| 68精品国产免费久久久久久婷婷| 国产成人综合亚洲| 国产精品第3页| 国产91在线播放| 亚洲一级黄色av| 久热爱精品视频线路一| 欧美日韩国产精品专区| 色偷偷888欧美精品久久久| 亚洲国产成人久久综合一区| 久久久久久久网站| 久久精品国产96久久久香蕉| 青青在线视频一区二区三区| 午夜精品久久久久久久99热浪潮| 91精品国产综合久久香蕉最新版| 久久国产精品久久久久久久久久| 久久免费视频这里只有精品| 欧美乱妇高清无乱码| 成人国产精品日本在线| 国产啪精品视频| 亚洲免费人成在线视频观看| 亚洲国产精品美女| 国产亚洲成av人片在线观看桃| 久久久久久这里只有精品| 国产精品欧美激情在线播放| 欧美国产日韩一区二区三区| 欧美激情第一页xxx| 91亚洲精品久久久久久久久久久久| 亚洲精品影视在线观看| 91精品国产综合久久男男| 成人一区二区电影| 51视频国产精品一区二区| 国产精品久久一区主播| 精品香蕉一区二区三区| 亚洲 日韩 国产第一| 欧美精品videosex性欧美| 久热爱精品视频线路一| 欧美日韩一区二区免费在线观看| 91精品久久久久久久久久久| 亚洲欧美国产视频| 国产在线视频91| 日韩免费av一区二区| 欧美区二区三区| 国产亚洲欧美日韩一区二区| 精品亚洲永久免费精品| 国产亚洲视频中文字幕视频| 国产亚洲精品久久久久久777| 国产欧美一区二区三区久久| 国产精品视频男人的天堂| 懂色av影视一区二区三区| 久久777国产线看观看精品| 日韩av在线导航| 91精品国产91久久久久| 黑人极品videos精品欧美裸| 久久久久久尹人网香蕉| 亚洲国产欧美在线成人app| 6080yy精品一区二区三区| 久久久亚洲精品视频| 欧美日韩亚洲精品一区二区三区| 亚洲国产99精品国自产| 亚洲理论在线a中文字幕| 精品欧美一区二区三区| 麻豆乱码国产一区二区三区| 91精品国产成人| 亚洲国产高潮在线观看| 久久精品99久久香蕉国产色戒| 亚洲国产日韩一区| 亚洲电影免费观看高清完整版在线| 欧美日韩在线视频观看| 91av在线影院| 97av在线视频| 97婷婷大伊香蕉精品视频| 国产欧美欧洲在线观看| 最新的欧美黄色| 91日韩在线播放| 久久精品视频中文字幕| 亚洲日本中文字幕免费在线不卡| 国产亚洲精品91在线| 中文字幕欧美日韩精品| 欧美福利视频在线| 色综合亚洲精品激情狠狠| 久久这里有精品| 国产成人精品视频| 国产精品高潮呻吟久久av黑人| 综合av色偷偷网| 国产精品免费一区二区三区都可以| 精品视频久久久| 国产精品美女主播| 欧美日韩另类字幕中文| 国产精品99蜜臀久久不卡二区| 668精品在线视频| 国产精品永久免费观看| 国产精品女人网站| 欧美日韩成人在线观看| 日韩欧美视频一区二区三区| 中文字幕亚洲欧美日韩2019| 久久成人综合视频| 欧美精品久久久久| 国产精品女视频| 欧美日韩国产中字| 国产午夜精品一区理论片飘花| 欧美一区二区大胆人体摄影专业网站| 91在线高清视频| 91亚洲午夜在线| 久国内精品在线| 日韩乱码在线视频| 国产精品久久久av| 九九热精品视频国产| 久久亚洲一区二区三区四区五区高| 欧美亚洲国产精品| 日本中文字幕久久看| 国精产品一区一区三区有限在线| 亚洲精品aⅴ中文字幕乱码| 亚洲在线视频福利| 亚洲理论片在线观看| 亚洲成人激情视频| 日本韩国欧美精品大片卡二| 亚洲激情成人网|