Cześć!
Jestem w trakcie pisania aplikacji w C# z wykorzystaniem .netowych winformsów i biblioteki cairo. Tworzę obraz za pomocą cairo i próbuje go wyświetlić w standardowym podglądzie wydruku(printpreviewdialog + Cairo.Win32surface). Niestety utworzony obraz na podglądzie jest strasznie mały :(, jeżeli natomiast wyświetlam obraz w dialogu (standardowy form) to wszystko jest OK. Przypuszczam że jest to spowodowane różnymi rozdzielczościami jednak nie potrafię tego ustawić. Zwiększenie rozmiarów obrazu generowanego w cairo nie wchodzi w grę.
Kod:
private void CreatePagePreview(object sender, PrintPageEventArgs arg)
{
Win32Surface w32s = new Win32Surface(arg.Graphics.GetHdc());
Cairo.Context wcont= new Context(w32s);
//...generowanie obrazu w cairo...
w32s.Finish();
g.ReleaseHdc(w32s.Handle);
((IDisposable)wcont).Dispose();
g.Dispose();
}
Problemu nie rozwiązuje rysowanie na Cairo.ImageSurface, a następnie przekopiowanie do podglądu:
kod:
private void CreatePagePreview(object sender, PrintPageEventArgs arg)
{
int Width = prtdoc.DefaultPageSettings.PaperSize.Width;
int Height = prtdoc.DefaultPageSettings.PaperSize.Height;
Cairo.ImageSurface img = new ImageSurface(Format.ARGB32,width, height);
Cairo.Context cr = new Context(img);
//...printing on cairo surface...
img.Finish();
Cairo.Win32Surface w32s = new Win32Surface(arg.Graphics.GetHdc());
Cairo.Context wcont= new Context(w32s);
wcont.SetSourceSurface(img, 0, 0);
w32s.Finish();
g.ReleaseHdc(w32s.Handle);
((IDisposable)wcont).Dispose();
((IDisposable)cr).Dispose();
g.Dispose();
}
Spotkał już się może ktoś z tym problemem i wie jak go rozwiązać??
Z góry dzięki za odpowiedź
Pozdrawiam Mirek