Drukowanie Canvasów

0

Czy jest jakiś sposób na wydrukowanie Canvasa, któy częściowo lub całkowicie leży poza ekranem w danej chwili? Do drukowania i skalowania obrazu formularza używam pary Printer + StretchBlt. Działa ok ale tylko dla widocznej części formy. Poza nią drukowane są tylko obrazy kontrolek potomnych, canvas już nie. Dla ścisłości - Canvasy są rozciągnięte na TPanelach.

Będe wdzięczny za wszelką pomoc.

0

żeby wydrukować niewidoczny canvas:
1 tworzysz bitmapę ,ustalasz jej rozmiar
2. Używasz Canvas.CopyRect() w bitmapie
parametry wpisujesz następująco
Bitmap.Canvas.CopyRect(RegionDocelowy,CanvasKtóryDrukujesz,RegionCanvasa) ;
Drukujesz bitmapę (czasami trzeba ją rozciągnąć to zależy od rozdzielczości drukarki)

Przykład

Bitmap:=TBitmap.create;
Bitmap.width:=500;
Bitmap.height:=500;
Bitmap.Canvas.CopyRect(Rect(0,0,500,500),Form1.canvas , Rect(100,350,500,400));
printer.BeginDoc;
printer.Canvas.Draw(0,0,Bitmap);
printer.EndDoc;
Bitmap.free;
:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1