绘制旋转对象时是否有确定的方法来确定笔对象的溢出? .Net GDI +

时间:2010-07-05 20:00:37

标签: c# .net vb.net gdi+

例如,假设您有一个矩形时钟。手由带边框的填充三角形制成。边框用gdi +笔绘制,厚度可以从1向上变化 问题是,手应该始终在钟面的范围内。使用笔Alignment.Inset解决了这个问题但是,因为它渲染非常糟糕,所以它不是一个选项。

为了确保指针在时钟的范围内,我根据角度找到边界上的交点。然后我将手的底部的2个点旋转相同的角度,然后将这些点连接起来形成一个三角形。

现在,这可以确保点位于基于1像素线的边框上,但是当使用较粗的线条渲染时,它会在边缘上流血。为了解释这一点,我做了一些基本的触发来预测渲染后线的长度,根据笔的厚度,然后在找到交叉点之前减小时钟边界限。
这有所帮助,但不够准确。我必须遗漏一些关于如何根据笔的厚度在gdi +中精确渲染边框。如果有人有任何知识,请告诉我。如果有人认为这是浪费时间甚至试图解释它,那么,再次,让我知道并拯救我一天。

ETA:下面是一个示例屏幕截图,用于将笔的宽度设置为大于1.忽略圆,并想象两条线延伸以在圆的中心形成三角形。我需要一种方法来根据笔的大小,角度和时钟大小来预测超出边界的部分的长度,这样我就可以先减小手的大小。

alt text http://www.freeimagehosting.net/uploads/d3b5afb064.jpg

0 个答案:

没有答案