Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, DreamWeaver, Вы писали:
DW>>Вывожу картинку на принтер, но она получается уж очень маленькой. Как вообще можно задать ширину и высоту пикселя на бумаге?
А>//--------------------------------------------
А>// Для работы с принтером
А>// устанавливает 1 пиксел равным unit милиметрaм
А>//--------------------------------------------
А>void MDC::MPrinter::SetLogicalUnitSize(double unit)
А>{
А> if (!IsHandle())
А> return;
А> Flg_MM_Mode = TRUE;
А> dUnit = unit;
А> //получить размеры устройства в пикселях
А> int pp_size_x = GetDeviceCaps(m_hDC, HORZRES) — 1;
А> int pp_size_y = GetDeviceCaps(m_hDC, VERTRES) — 1;
А> SetRect(&DevRect, 0, 0, pp_size_x, pp_size_y);
А> //получить размеры устройства в милиметрах
А> int mm_size_x = GetDeviceCaps(m_hDC, HORZSIZE);
А> int mm_size_y = GetDeviceCaps(m_hDC, VERTSIZE);
А> double x_fact = (double)pp_size_x * unit * (double)DevRect.right / (double)mm_size_x;
А> double y_fact = (double)pp_size_y * unit * (double)DevRect.bottom / (double)mm_size_y;
А> OldMapMode = ::SetMapMode(m_hDC, MM_ISOTROPIC);
А> while (x_fact > (double)32767 || y_fact > (double)32767)
А> {
А> pp_size_x /= 2;
А> pp_size_y /= 2;
А> x_fact /= 2;
А> y_fact /= 2;
А> }
А> if (!SetWindowExtEx(m_hDC, pp_size_x, pp_size_y, &PrevWinExt) ||
А> !SetViewportExtEx(m_hDC,(int)(x_fact + 0.5), (int)(y_fact + 0.5), &PrevViewExt) ||
А> !DPtoLP(m_hDC, (LPPOINT)&DevRect, 2))
А> {
А> #ifdef WIN32
А> DWORD err = ::GetLastError();
А> TRACE("Set extension error %xl\n", err);
А> #endif
А> }
А>}
А можешь привести пример использования этой функции. Сколько не пытался, не получается увеличить картинку на бумаге
В сложившихся условиях ни то, ни другое не сулило ему никакой выгоды. Чего не скажешь о молчании...