TerAn |
Отправлено: 03.04.2004, 11:28 |
|
Не зарегистрирован
|
Подскажите, как можно организовать предпросмотр перед печатью. Проблема в том, что для TPinter::Canvas не работает метод CopyRect. Каким образом можно скопировать то, что нарисовано на канвасе принтера на другой канвас? |
|
Admin |
Отправлено: 03.04.2004, 18:14 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Почему не работает?
CODE |
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if(OpenDialog1->Execute()){
TPrinter* tp = new TPrinter;
TRect MyRect, MyOther;
MyRect = Rect(10,10,100,100);
MyOther = Rect(1,1,100, 201);
Graphics::TBitmap *Bitmap = new Graphics::TBitmap;
Bitmap->LoadFromFile(OpenDialog1->FileName);
tp->BeginDoc();
tp->Canvas->CopyRect(MyOther, Bitmap->Canvas, MyRect);
tp->EndDoc();
delete Bitmap;
}
}
//---------------------------------------------------------------------------
|
|
|
TerAn |
Отправлено: 04.04.2004, 11:00 |
|
Не зарегистрирован
|
Да, не спорю так работает, но надо то наоборот, т.е. надо скопировать с канваса принтера на какой-нибудь другой. В хелпе по этому поводу написано следующее:
QUOTE | C++Builder canvases use device-dependent bitmaps to implement the Draw, StretchDraw, or CopyRect methods. Because of this, you can’t use these methods with most printers. | .
|
|
Asher |
Отправлено: 04.04.2004, 12:42 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
Привет.
А в чем разница куда копировать?
А еще лучше сделай метод рисования независимым, т.е. передавай ему только указатель на Canvas и его размер.
Подсунешь Image->Canvas — будет PreView, подсунешь Printer->Canvas — печать.
|
|
TerAn |
Отправлено: 04.04.2004, 14:22 |
|
Не зарегистрирован
|
Да, наверное независимый метод рисования это лучшее решение, так и сделаю, спасибо. |
|
|