我在我的silverlight应用程序中有一个scribbale墨水呈现器,我多次使用不同形状的墨水呈现器,我想计算墨水呈现器被涂抹了多少百分比,
我的问题是,由于墨水呈现器的形状可以是圆形或多边形,我不知道如何才能在可手写的表面上获得单位/像素。
据我所知,actualWidth和actualHeight属性只能通过计算来帮助我处理矩形
units = uielemnt.Actualwidth * uielement.ActualHeight但是对于肋骨形状,我不确定实际的宽度/高度是如何计算的。
发布于 2010-07-16 16:48:57
WPF应答
在WPF中,您可以只使用Geometry.Combine来组合笔划几何图形,然后在组合的几何图形上调用GetArea来获得覆盖的总面积。
Silverlight Answer
在Silverlight中,你没有Geomerty.Combine或Geometry.GetArea,你也没有RenderTargetBitmap。因此,在Silverlight中,我认为您必须自己进行计算。
以下是设置步骤:
在最小x坐标下按x排序,然后按y排序。
下面是主循环:
的最大x坐标。
下面是计算面积的内部循环:
就这样。
有关 answer的更多详细信息
将PathGeometry的线段转换为三次贝塞尔近似的公式:
上使用上述公式
计算活动Bezier曲线的交点:
之前检查y最小值/最大值以查看是否存在任何可能的重叠,则可以节省一些计算
https://stackoverflow.com/questions/3259778
复制相似问题