![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Масштабирование при распечатке [D7, WinXP]
Medusa__ © (2007-04-04 20:19:00)Здравствуйте! Распечатываю TControl (а именно TPanel) вот таким вот макаром:
var tp:TPrinter;
begin
tp:=TPrinter.Create;
PrintDialog1.Execute;
tp.BeginDoc;
TPanel.PaintTo(tp.Canvas.Handle,0,0);
tp.EndDoc;
end;
Распечатывается форма 3.5 на 1.5 см. Как лучше смасштабировать, чтобы было на весь лист? (в пропорциях)
Rouse_ (2007-04-09 12:32:00) [1]
> Как лучше смасштабировать, чтобы было на весь лист? (в пропорциях)
Через SetMapMode переключи канвас в анизотропный режим, через SetWindowExtEx задай текущае пропорции, через SetViewportExtEx задай необходимые тебе, после чего рисуй.
Medusa__ (2007-04-09 12:22:00) [2]Чтот я не совсем понимаю как это реализовать..
подскажите куда дальше копать..)
Medusa__ (2007-04-05 20:08:00) [3]Спасибо, попробую.
>нафик не надо, убери. В модуле Printers уже есть объект Printer его и используй. Создавать его не надо.
Сделано.
{RASkov} (2007-04-05 00:06:00) [4]Вот это вот:
> var tp:TPrinter;
нафик не надо, убери. В модуле Printers уже есть объект Printer его и используй. Создавать его не надо.
> Как лучше смасштабировать, чтобы было на весь лист? (в пропорциях)
А здесь можно много чего придумать, но нужно учитывать, что разрешение(dpi) монитора и принтера разные...
Например рисуй TControl на временный битмап, а его(битмап) выводи на канву принтера StrechDraw()
Посмотри на GetDeviceCaps.... может полегче станет.
Medusa__ (2007-04-04 22:19:00) [5]Актуально :-)
Medusa__ (2007-04-04 22:19:00) [6]Актуально :-)