Spread 출력(미리보기)를 하기 위해서는
자체 기능을 이용해서 출력이 가능하지만...
FarPoint.Win.Spread.PrintInfo info = new FarPoint.Win.Spread.PrintInfo();
info.PrintType = FarPoint.Win.Spread.PrintType.All;
info.Orientation = FarPoint.Win.Spread.PrintOrientation.Portrait;
info.ZoomFactor = 2f;
info.Opacity = 100;
info.ShowPrintDialog = true;
info.Preview = true;
…
SpWork.ActiveSheet.PrintInfo = info;
SpWork.PrintSheet(SpWork.ActiveSheet);
자체 출력을 사용하면
Dialog 로 보여지기 때문에 이쁜 출력을 만들기가 힘들다.
출력화면을 이쁘게 만들고 싶다거나 팝업창이 아니라 특정화면 안에 포함되어 보여지게 하고 싶다면
출력에 대한 이미지를 추출하여 이 이미지를 가지고 미리보기 화면을 별도로 하여 출력화면을 만들어야 한다.
다행히 Spread 에서는 출력 이미지를 추출하는 기능을 제공한다.
제공하지 않아도 DrawToBitmap 으로 이미지를 만들어서 잘 잘라서 출력을 만들어도 되지만..
해당 컨트롤의 내용을 그대로 이미지로 만들다보니 만들어진 이미지 해상도가 떨어지는 문제가 있어서 제외하고.
Spread 의 해당 메소드를 이용하면 출력에 대한 이미지를 얻어올 수 있다.
public void OwnerPrintDraw(Graphics g, Rectangle rect, int sheet, int page);
그래서 대충 이런식의 코드가 나오게 된다.
// 출력할 Sheet 에 출력에 대한 정보 설정
FarPoint.Win.Spread.PrintInfo info = new FarPoint.Win.Spread.PrintInfo();
info.PrintType = FarPoint.Win.Spread.PrintType.All;
…
info.Preview = true;
SpWork.ActiveSheet.PrintInfo = info;
// 출력 Rectangle 을 설정하여 GetOwnerPrintPageCount 메소드로 페이지수를 획득
System.Drawing.Rectangle PageRect = new System.Drawing.Rectangle(0, 0, ?, ?);
int PageCount = SpWork.GetOwnerPrintPageCount(SpWork.CreateGraphics(), PageRect, SpWork.ActiveSheetIndex);
// 페이지 수 만큼 출력 이미지 획득
List<System.Drawing.Image> lstBmp = new List<System.Drawing.Image>();
for (int i = 1; i <= PageCount; i++)
{
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(?, ?);
using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmp))
{
g.Clear(System.Drawing.Color.White);
SpWork.OwnerPrintDraw(
g,
new System.Drawing.Rectangle(?, ?, ?, ?),
this.mWorkSpr.ActiveSheetIndex,
i);
g.Dispose();
}
lstBmp.Add(bmp);
}
각종 Rectangle 을 계산하고 설정해주는게 매우 번거롭긴하다.
또 만들어진 이미지로 다시 미리보기, 출력에 대한 것을 만들어야 하지만
그래도 좀 더 이쁘고 내가 원하는 구성으로 만들수있다.
'Dev::DotNet > WinForm' 카테고리의 다른 글
Spread 의 Annotation 시 속도 문제 (2) | 2013.11.20 |
---|---|
TabControl - Button / Tab Move (0) | 2013.11.07 |
ProeprtyGrid 에서 사용자 Editor 생성 (0) | 2013.02.12 |
Property 속성 변경 (0) | 2013.02.05 |
FarPoint.Win.TextRenderer.TextRenderer.DrawText 의 formatflags 속성 (0) | 2012.08.17 |