一种模拟圆规实现绘制圆的方法_3

文档序号:9922499阅读:来源:国知局
0221 ]PointS.Y = PointQ.Y+Vector4.Y ;
[0222]PointU.X = PointT.X+Vector4.X;
[0223]PointU.Y = PointT.Y+Vector4.Y;
[0224](12)算出点 R1、Z1、Z2:
[0225]Rl为TU的中点,有:
[0226]PointRl.X=(PointT.X+PointU.X)/2;
[0227]PointRl.Y= (PointT.Y+PointU.Y)/2;
[0228]计算辅助向量:
[0229]Vector5.X = PointQ.X-PointT.X;
[0230]Vector5.Y = PointQ.Y-PointT.Y ;
[0231]规定:
[0232]PointZ2.X = PointRl.X+Vector5.X*0.1;
[0233]PointZ2.Y = PointRl.Y+Vector5.Y*0.I;
[0234]PointZl.X = PointRl.X+Vector5.X*0.9;
[0235]PointZl.Y = PointRl.Y+Vector5.Y*0.9;
[0236]步骤40、确定所述圆规数学几何图形模型的控制区域,所述控制区域包括移动控制区域、拉伸控制区域、旋转控制区域及绘制控制区域;具体有:
[0237](I)绘制控制区域:LMRCPL扣除QTZ2USZIQ,控制此区域可以进行绘制操作;
[0238](2)第一种拉伸方式的拉伸控制区域:V4TZ2USZ1QV5V4扣除HIJKH;
[0239](3)扣除(1)、(2)的区域,剩下的区域都是移动控制区域;
[0240](4)旋转控制区域,见图6的AA;
[0241](5)第二种拉伸方式的拉伸控制区域,见图6的BB;
[0242]定义控制效果,具体为:
[0243 ](I)移动效果为整体移动圆规的位置,见图8;
[0244](2)拉伸效果为控制圆规的半径大小;
[0245]第一种拉伸方式,见图5;
[0246]第二种拉伸方式,见图7;
[0247](3)旋转效果为改变圆规开始绘制的绘制起点,见图5;
[0248](4)绘制效果为绘制过程的控制,见图4;
[0249]步骤50、使用编程工具,根据各个顶点的坐标信息填充及绘制出所述圆规数学几何图形模型,并构建出所述控制区域,判断操作点是否位于所述控制区域内,即判断操作点是否满足相应的控制条件,若满足,则在不同的控制区域内进行相应的功能操作;若不满足,则不进行任何操作;具体包括:
[0250]步骤501、填充相应的区域及绘制相应的区域;
[0251](I)填充顶上的弧形区域FEG:
[0252]g.F iIIPath(Brush,FoPathFEG);
[0253](2)填充顶上的小矩形区域FF1G1GF:
[0254]g.Fi IIPath(Brush,FoPathFFlGlGF);
[0255](3)绘制顶上的小矩形区域FF1G1GF:
[0256]g.DrawPath(Pen,FoPathFFlGlGEF);
[0257](4)填充及绘制区域VXYV2V3V:
[0258]g.FillPath(Brush,FoPathVXYV2V3V);
[0259]g.DrawPath(Pen,FoPathVXYV2V3V);
[0260]在本例中,(1)-(4)的填画刷(8^14)颜色为(填充色):1^8(277,277,277),笔(Pen)颜色为黑色:RGB(0,0,0);
[0261](5)填充及绘制区域XOYXV:
[0262]g.Fi IIPath(Brush,FoPathXOYXV);
[0263]g.DrawPath(Pen,FoPathXOYXV);
[0264]此处的画刷颜色为:RGB(180,180,180)
[0265](6)填充及绘制右边的“画笔”:
[0266]填充及绘制区域咖1^斯,填充色1?8(227,277,277):
[0267]g.Fi IIPath(Brush,FoPathRMLPNR);
[0268]g.DrawPath(Pen,FoPathRMLPNR);
[0269]填充及绘制区域,填充色RGB(76,190,246)
[0270]g.Fi IIPath(Brush,FoPathQMNSQ);
[0271]g.DrawPath(pen,FoPathQMNSQ);
[0272](7)填充及绘制区域174¥591',填充色为1?8(227,227,227):
[0273]g.FillPath(Brush,FoPathTV4V5QT);
[0274]g.DrawPath(Pen,FoPathTV4V5QT);
[0275](8)填充及绘制区域HIJKH,填充色为RGB(160,160,160)
[0276]g.Fi IIPath(Brush,FoPathHIJKH);
[0277]g.DrawPath(Pen,FoPathHIJKH);
[0278](9)绘制顶上的旋转控制圆圈及“右脚边”的拉伸控制点
[0279]绘制旋转点(图6的AA):
[0280]RectFl.X = RotatePointAttr.X-1O ;
[0281 ]RectFl.Y = RotatePointAttr.Y-1O ;
[0282]RectFl.ffidth = 20;
[0283]RectFl.Height = 20;
[0284]g.DrawEll ipse(Pen,RectFl);
[0285]其中:
[0286]RotatePointAttr.X = PointE.X ;
[0287]RotatePointAttr.Y = PointE.Y-15;
[0288]绘制拉伸点(图6的BB):
[0289]RectF2.X = ExtendPointAttr.X-1O ;
[0290]RectF2.Y = ExtendPointAttr.Y-1O ;
[0291]RectF2.ffidth = 20;
[0292]RectF2.Height = 20;
[0293]g.DrawElI ipse(Pen,RectF2);
[0294]其中:
[0295]ExtendPointAttr.X = PointR.X+40 ;
[0296]ExtendPointAttr.Y = PointV.Y;
[0297](10)用drawstring函数将半径大小(PointO与PointR的距离),标注在点PointZ上;
[0298]特别要注意的是:步骤502每个内部步骤之间的顺序不能乱,要按本发明提所描述得来执行,否则得到的不会是例图中的“圆规”,而将是另类“长相”的“圆规”;
[0299]步骤502、构建控制区域:
[0300](I)构建区域 FF1G1GEF:
[0301 ]FoPathFFlGlGEF.StartFigure;
[0302]FoPathFFlGlGEF.AddLine(PointF,PointFl);
[0303]FoPathFFlGlGEF.CloseFigure;
[0304]FoPathFFlGlGEF.StartFigure;
[0305]FoPathFFlGlGEF.AddLine(PointG,PointGl);
[0306]FoPathFFlGlGEF.CloseFigure;
[0307]FoPathFFlGlGEF.AddArc (RoundRect,-30 ,-120); -30 为圆弧起始边角度,-120 为圆弧圆心角;
[0308](2)构建区域 FEGF:
[0309]FoPathFEG.AddArc (RoundRect,-30 ,-120); -30 为圆弧起始边角度,-120 为圆弧圆心角;
[0310](3)构建区域 FF1G1GF:
[0311 ]FoPathFFlGlGF.AddLine(PointF,PointFl);
[0312]FoPathFFlGlGF.AddLine(PointFl,PointGl);
[0313]FoPathFFlGlGF.AddLine(PointGl,PointG);
[0314]FoPathFFlGlGF.AddLine(PointG,PointF);
[0315](4)构建区域 HIJKH:
[0316]FoPathHIJKH-AddLine(PointHjPointI);
[0317]FoPathHIJKH.AddLine(Pointl,PointJ);
[0318]FoPathHIJKH-AddLine(PointJjPointK);
[0319]FoPathHIJKH-AddLine(PointKjPointI);
[0320](5)构建路径 VXYV2V3V:
[0321 ]FoPathVXYV2V3V.AddLine(Po intV, Po intX);
[0322]FoPathVXYV2V3V.AddLine(PointX,PointY);
[0323]FoPathVXYV2V3V.AddLine(PointY,PointV2);
[0324]FoPathVXYV2V3V.AddLine(PointV2,PointV3);
[0325]FoPathVXYV2V3V.AddLine(PointV3,PointV);
[0326](6)构建路径 RMLPNR:
[0327]FoPathRMLPNR.AddLine(PointR,PointM);
[0328]FoPathRMLPNR.AddLine(PointM,PointL);
[0329]FoPathRMLPNR.AddLine(PointL1PointP);
[0330]FoPathRMLPNR.AddLine(Po intP, Po intN);[0331 ] FoPathRMLPNR.AddLine(PointN,PointR);
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1