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