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轴平行。因此,您的代码只计算包含四边形的最小矩形。