C# ITextSharp四点到矩形

C# ITextSharp四点到矩形,c#,pdf,itextsharp,C#,Pdf,Itextsharp,如何计算或将四边形点转换为矩形 var quad = dic.Get(PdfName.QUADPOINTS) as PdfArray; var rect = new iTextSharp.text.Rectangle(<missing conversion>); var filter = new RegionTextRenderFilter(rect); var quad=dic.Get(PdfName.QUADPOINTS)作为PdfArray; var rect=new iTe

如何计算或将四边形点转换为矩形

var quad = dic.Get(PdfName.QUADPOINTS) as PdfArray;
var rect = new iTextSharp.text.Rectangle(<missing conversion>);
var filter = new RegionTextRenderFilter(rect);
var quad=dic.Get(PdfName.QUADPOINTS)作为PdfArray;
var rect=new iTextSharp.text.Rectangle();
var过滤器=新区域外部过滤器(rect);
在等待答案的时候,我自己发现了。四点数组总是可以被8整除。矩形每个角的一对x,y坐标(2*4=8)。考虑到这些信息,我创建了以下扩展方法:

public static class Extensions
{
    public static iTextSharp.text.Rectangle[] ToRectangle(this PdfArray quadricles)
    {
        var result = new List<iTextSharp.text.Rectangle>();

        for (var m = 0; m < quadricles.Size; m += 8)
        {
            var dimX = new List<float>();
            var dimY = new List<float>();

            for (var n = 0; n < 8; n += 2)
            {
                var x = quadricles[m + n] as PdfNumber;
                dimX.Add(x.FloatValue);
                var y = quadricles[m + n + 1] as PdfNumber;
                dimY.Add(y.FloatValue);
            }

            result.Add(new iTextSharp.text.Rectangle(dimX.Min(), dimY.Min(), dimX.Max(), dimY.Max(), 1));
        }

        return result.ToArray();
    }
}
公共静态类扩展
{
公共静态iTextSharp.text.Rectangle[]到矩形(此PdfArray四边形)
{
var result=新列表();
对于(变量m=0;m
这只适用于非常特殊的四点。在等待答案的过程中,我自己发现了它——不太可能。。。四边形基于逆时针排列的任意四个点。另一方面,
矩形
的边必须与x或y轴平行。因此,您的代码只计算包含四边形的最小
矩形。