Всем доброго времени суток. Прошу помочь с проблемой.
У меня на форме находится ScrollBox, на нем лежит Image, который может масштабироваться с помощью TrackBar. Когда Image стает больше, чем ScrollBox, соответственно появляются полосы прокрутки. Также на форме находится кнопка Печать. Я хочу чтобы при нажатии на кнопку часть картинки, которая на данный момент в зоне видимости распечатывалась на ВЕСЬ!!! лист бумаги.
Сейчас я использую следующий код:
procedure TMain.Pechat_BitBtnClick(Sender: TObject);
begin
PrintDlg:=TPrintDialog.Create(Owner);
if PrintDlg.Execute then
begin
Printer.BeginDoc;
Printer.Canvas.Refresh;
ScrollBox1.PaintTo(Printer.Handle,10,10);
end;
PrintDlg.Free;
end;
Естественно изображение на бумаге получается маленьким из-за разницы в разрешениях монитора и принтера.
Функция GetDeviceCaps мне известна. Пытался сделать через CopyRect - не вышло тоже, там через Image надо делать - куски его копировать, но это имеет смысл только при постоянных размерах Image'а, а он масштабируется и вычислить координаты прямоугольника я уже никак не смог.
Кто еще что может предложить, посоветуйте пожалуйста.
Заранее спасибо.