多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 曲线绘制 ![](https://img.kancloud.cn/3e/7c/3e7c0071a241fac285a2021c6649b5cd_666x486.png) # 代码 ``` // 曲线 import gdi import console console.open() winform.custom.wndproc = function(hwnd,message,wParam,lParam){ select( message ) { case 0xF/*_WM_PAINT*/{ gdi.paint( hwnd, function( hdc,width, height,rcPaint,fErase,paintStruct ){ // 贝塞尔曲线 点数为(4+3n)个 每4个点作一条贝塞尔曲线 var points1 = { int value[8] = {50;100;100;200;150;100;200;200} } var points2 = { int value[14] = {50;50;100;100;150;50;200;100;250;50;300;100;350;50} } console.varDump(points) ::Polyline(hdc,points2,7) //画完后,当前点仍是默认的(0,0)点处 ::Polyline(hdc,points1,4) ::PolyBezier(hdc,points2,7) ::PolyBezier(hdc,points1,4) ::BitBlt(hdc, 0, 0, width, height, hMemDc, 0, 0, 0xCC0020/*_SRCCOPY*/); } ); } }; } winform.custom2.wndproc = function(hwnd,message,wParam,lParam){ select( message ) { case 0xF/*_WM_PAINT*/{ gdi.paint( hwnd, function( hdc,width, height,rcPaint,fErase,paintStruct ){ // PolyBezierTo 与 PolyBezier 区别是,前者需要指定开始点,而后者不需要 // PolyBezierTo 的点个数是3n即中 var points3 = { int value[6] = {50;100;100;50;150;100;} } var pt = ::POINTF() ::PolylineTo(hdc,points3,3) //画完后,当前点停留在了最后一个点上 ::MoveToEx(hdc,0,0,pt) ::PolyBezierTo(hdc,points3,3) ::BitBlt(hdc, 0, 0, width, height, hMemDc, 0, 0, 0xCC0020/*_SRCCOPY*/); } ); } }; } ```