Witam,
Problem jest nastepujacy. Pisze program do wydruku blankietow. Wszystko mam, tylko nie wiem za bardzo jak zrobic podglad wydruku, tzn. wiem, ale utknalem na tym, jak odpowiednio wyskalowac obraz.
Moze najpierw napisze jak skaluje wydruk. Drukuje rysujac po Canvasie drukarki, wymiary przeliczam na mm, czyli cos takiego:
dl = printer->PageWidth;
szer = printer->PageHeight;
//DL_STRONY, SZER_STRONY - wymiary strony, ktora chce drukowac (210x297)
jedn_x = dl/DL_STRONY;
jedn_y = szer/SZER_STRONY;
Teraz majac wszystkie wymiary blankietu moge spokojnie to wydrukowac i umiescic w odpowiednim miejscu na stronie, na przyklad jezeli chce skoczyc 10 mm od lewej i 10 mm od gornej krawedzi to pisze tak:
printer->Canvas->MoveTo(jedn_x*10,jedn_y*10);
Jednak z podgladem wydruku sprawa nie wydaje mi sie juz tak prosta. Przykladowo, chcac miec powiekszenie 100 % musze to tak wyskalowac, zeby w kazdej rozdzielczosci podglad na monitorze mial takie wymiary jak na wydruku.
Wiem ze zamotalem troche, wiec krotko - mam 3 komponenty, na ktorych robie podglad: Panel do tla, na nim Image (na nim rysuje podglad), a wszystko do wrzucone do Scrollboxa.
Jak w takim przypadku:
-
obliczyc rozmiar Panela tak, aby na monitorze mial fizyczna dlugosc taka jak strona na wydruku (jezeli sie nie zmiesci, to nie szkodzi, po to jesc ScrollBox zeby przewijac widok) - nie wiem jak maja sie wpisywane rozmiary panela do jego rzeczywistej wielkosci na ekranie - to chyba bedzie zalezalo od rozdzielczosci, ale w jaki dokladnie sposob [???]
-
jezeli juz rozwiaze pierwszy problem, to i tak chyba nie moge wziac wymiarow panela/Image zamiast printer->PageWidth i printer->PageHeight, poza tym pojawia sie jeszcze problem przeskalowania rozmiarow czcionek i grubosci linii :|
Podpowie ktos? To nie jest w sumie problem z C++ (pewnie i tak pojdzie do Newbie :P ) ale umiescilem tuataj bo uzywam BCB.