当前位置: 首页>>代码示例>>C#>>正文


C# Path.AddBezier方法代码示例

本文整理汇总了C#中Path.AddBezier方法的典型用法代码示例。如果您正苦于以下问题:C# Path.AddBezier方法的具体用法?C# Path.AddBezier怎么用?C# Path.AddBezier使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Path的用法示例。


在下文中一共展示了Path.AddBezier方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: AddBorder

		/// <summary>
		/// 向拼图碎片的路径中添加一条边,路径的当前节点总是在起始点。
		/// </summary>
		/// <param name="path">路径。</param>
		/// <param name="startPoint">边的起始点。</param>
		/// <param name="endPoint">边的结束点。</param>
		/// <param name="randoms">该边的凹凸性。</param>
		/// <param name="border">与该条边相关的一组随机数,范围都是 [0, 1)。</param>
		protected override void AddBorder(Path path, Vector2 startPoint, Vector2 endPoint, bool border, float[] randoms)
		{
			// 贝塞尔曲线的起始和结束点。
			float rate1 = 1f / 3 + randoms[0] / 12;
			Vector2 sp = Vector2.Lerp(startPoint, endPoint, rate1);
			Vector2 ep = Vector2.Lerp(startPoint, endPoint, 1 - rate1);
			// 贝塞尔曲线的控制点。
			float rate2 = rate1 - randoms[1] / 4;
			Vector2 c1 = Vector2.Lerp(startPoint, endPoint, rate2);
			Vector2 c2 = Vector2.Lerp(startPoint, endPoint, 1 - rate2);
			// 与边框垂直的向量。
			Vector2 cross = new Vector2(endPoint.Y - startPoint.Y, startPoint.X - endPoint.X);
			if (!border)
			{
				cross.X *= -1;
				cross.Y *= -1;
			}
			cross *= 1f / 4 + randoms[2] / 8;
			c1 += cross;
			c2 += cross;
			// 连接边框的贝塞尔曲线。
			float rate3 = 1f / 6 + randoms[3] / 6;
			Vector2 sc2 = sp + (sp - c1) * rate3;
			Vector2 sc1 = Vector2.Lerp(startPoint, sc2, randoms[4]);
			Vector2 ec1 = ep + (ep - c2) * rate3;
			Vector2 ec2 = Vector2.Lerp(endPoint, ec1, randoms[4]);
			path.AddBezier(sp, sc1, sc2);
			path.AddBezier(ep, c1, c2);
			path.AddBezier(endPoint, ec1, ec2);
		}
开发者ID:CYJB,项目名称:Cyjb.Projects.JigsawGame,代码行数:38,代码来源:JigsawStandardSmoothShape.cs

示例2: AddBorder

		/// <summary>
		/// 向拼图碎片的路径中添加一条边,路径的当前节点总是在起始点。
		/// </summary>
		/// <param name="path">路径。</param>
		/// <param name="startPoint">边的起始点。</param>
		/// <param name="endPoint">边的结束点。</param>
		/// <param name="randoms">该边的凹凸性。</param>
		/// <param name="border">与该条边相关的一组随机数,范围都是 [0, 1)。</param>
		protected override void AddBorder(Path path, Vector2 startPoint, Vector2 endPoint,
			bool border, float[] randoms)
		{
			// 贝塞尔曲线的起始和结束点。
			float rate1 = 1f / 3 + randoms[0] / 12;
			Vector2 sp = Vector2.Lerp(startPoint, endPoint, rate1);
			Vector2 ep = Vector2.Lerp(startPoint, endPoint, 1 - rate1);
			// 贝塞尔曲线的控制点。
			float rate2 = rate1 - randoms[1] / 4;
			Vector2 c1 = Vector2.Lerp(startPoint, endPoint, rate2);
			Vector2 c2 = Vector2.Lerp(startPoint, endPoint, 1 - rate2);
			// 与边框垂直的向量。
			Vector2 cross = new Vector2(endPoint.Y - startPoint.Y, startPoint.X - endPoint.X);
			if (!border)
			{
				cross.X *= -1;
				cross.Y *= -1;
			}
			cross *= 1f / 4 + randoms[2] / 8;
			path.AddLine(sp);
			path.AddBezier(ep, c1 + cross, c2 + cross);
			path.AddLine(endPoint);
		}
开发者ID:CYJB,项目名称:Cyjb.Projects.JigsawGame,代码行数:31,代码来源:JigsawStandardShape.cs


注:本文中的Path.AddBezier方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。