Конференция "WinAPI" » Печать изображения в ScrollBox [D7, WinXP]
 
  • KiLLiR © (17.04.09 21:48) [0]
    Всем доброго времени суток. Прошу помочь с проблемой.
    У меня на форме находится 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'а, а он масштабируется и вычислить координаты прямоугольника я уже никак не смог.
    Кто еще что может предложить, посоветуйте пожалуйста.
    Заранее спасибо.
  • ZZTop24 (17.04.09 23:49) [1]
    Получаешь DC ScrollBox1 и делаешь StretchBlt на канву принтера. Разве что возня с отношениями, а поле просмотра тоже вычислить просто.
 
Конференция "WinAPI" » Печать изображения в ScrollBox [D7, WinXP]
Есть новые Нет новых   [134435   +38][b:0][p:0.001]