public MyGdiPlusCanvas GetCanvasPage(int hPageNum, int vPageNum) { int j = cachePages.Count; for (int i = j - 1; i > -1; i--) { MyGdiPlusCanvas page = cachePages[i]; if (page.IsPageNumber(hPageNum, vPageNum)) { cachePages.RemoveAt(i); if (page.DimensionInvalid) { page.Reset(hPageNum, vPageNum, eachPageWidth, eachPageHeight); page.IsUnused = false; } return(page); } } if (j >= numOfCachePages) { MyGdiPlusCanvas page = cachePages[0]; cachePages.RemoveAt(0); page.IsUnused = false; if (page.DimensionInvalid) { page.Reset(hPageNum, vPageNum, eachPageWidth, eachPageHeight); } else { page.Reuse(hPageNum, vPageNum); } Rectangle rect = page.Rect; page.Invalidate(rect); return(page); } else { return(new MyGdiPlusCanvas(0, 0, eachPageWidth, eachPageHeight)); //return (MyGdiPlusCanvas)LayoutFarm.UI.GdiPlus.MyWinGdiPortal.P.CreateCanvas( // 0, 0, eachPageWidth, eachPageHeight); //PixelFarm.Drawing.WinGdi.WinGdiPlusPlatform //return new MyGdiPlusCanvas( // hPageNum, // vPageNum, // hPageNum * eachPageWidth, // eachPageHeight * vPageNum, // eachPageWidth, // eachPageHeight); } }
public void CanvasInvalidate(Rectangle rect) { Rectangle r = rect; if (pageA != null && pageA.IntersectsWith(r)) { pageA.Invalidate(r); } if (pageB != null && pageB.IntersectsWith(r)) { pageB.Invalidate(r); } if (pageC != null && pageC.IntersectsWith(r)) { pageC.Invalidate(r); } if (pageD != null && pageD.IntersectsWith(r)) { pageD.Invalidate(r); } }