Страница: 1 |
Вопрос: Помогите!!! Не могу правильно распечатать!!! | Добавлено: 28.03.07 11:11 |
Автор вопроса: ![]() |
У меня есть длинный рисунок в фрейме. Длина может достигать и до 300000. Мне нужно распечатать на листе а4 с альбомной ориентацией, и чтоб на каждом листе было по два рисунка. Как мне разделить все эти рисунки ???
Вот мой не рабочий код печати. Dim hFrameDC As Long, oldmode As Long, R As Integer, t As Integer oldmode = mat.ScaleMode mat.ScaleMode = vbPixels R = Val(FrM.Width / 12780) t = 1 If R > 0 Then For I = 1 To R Load Pic(t) Pic(t).Visible = False Pic(t).Width = 12780 Pic(t).Height = FrM.Height hFrameDC = GetDC(FrM.hwnd) BitBlt Pic(t).hdc, 0, 0, 847 * t, 4710, hFrameDC, 847 * (t - 1), 0, vbSrcCopy ReleaseDC FrM.hwnd, hFrameDC Pic(t).Refresh t = t + 1 Next I Load Pic(t) Pic(t).Width = 12780 Pic(t).Height = FrM.Height hFrameDC = GetDC(FrM.hwnd) BitBlt Pic(t).hdc, 0, 0, 847 * t, 4710, hFrameDC, 847 * (t - 1), 0, vbSrcCopy ReleaseDC FrM.hwnd, hFrameDC Pic(t).Refresh Else Load Pic(t) Pic(t).Visible = False Pic(t).Width = FrM.Width Pic(t).Height = FrM.Height hFrameDC = GetDC(FrM.hwnd) BitBlt Pic(t).hdc, 0, 0, 847, 4710, hFrameDC, 0, 0, vbSrcCopy ReleaseDC FrM.hwnd, hFrameDC Pic(t).Refresh t = t + 1 End If mat.ScaleMode = oldmode Printer.ScaleMode = 2 Printer.Orientation = 2 If R = 0 Then Printer.Print Printer.PaintPicture Pic(1).Image, 10, 10 Printer.EndDoc Exit Sub End If If R > 0 Then For I = 1 To R Step 2 Printer.Print Printer.PaintPicture Pic(I).Image, 10, 10 Printer.PaintPicture Pic(I + 1).Image, 10, 300 If I <> R Then Printer.NewPage Next I Printer.EndDoc End If |
Ответы | Всего ответов: 12 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() Вопросов: 38 Ответов: 190 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 28.03.07 12:52 |
А какую ошибку он выдает? |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 249094859 Вопросов: 0 Ответов: 310 |
Профиль | Цитата | #2 | Добавлено: 28.03.07 13:27 |
300000 чего? |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 18 Ответов: 57 |
Профиль | Цитата | #3 | Добавлено: 28.03.07 13:57 |
А какую ошибку он выдает? Никакую!! я просто не могу разделить их=(
|
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 18 Ответов: 57 |
Профиль | Цитата | #4 | Добавлено: 28.03.07 13:58 |
300000 чего? Все равно ![]() ![]() |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() Вопросов: 38 Ответов: 190 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 28.03.07 14:33 |
Никакую!! я просто не могу разделить их=(
Если не делится может слишком длинное число. Бери long или качай ActiveX-ы для работы с длинными числами. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 18 Ответов: 57 |
Профиль | Цитата | #6 | Добавлено: 28.03.07 15:01 |
Я не правильно обясняю +) . Фрайм длинной в 30000 пикселей. Естевстенно если его распечатать он на альбомном листе не поместиться. Поэтому у меня стоит задача фрейм разбить и распечать на листе сразу два фрейма. Для этого я хотел загрузить в picturebox по определенную длину фрейма и распечатать его. Может это можно сделать и по другому, но я не знаю как ![]() |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 249094859 Вопросов: 0 Ответов: 310 |
Профиль | Цитата | #7 | Добавлено: 28.03.07 18:21 |
чей то какой то мутный у тебя код. Цифры каие-то непонятные... А алгоритм прост:
Отправляй при помощи BitBlt рисуок на принтер кусочками в соответствии с размерами листа. Собственно и всех делов. |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 18 Ответов: 57 |
Профиль | Цитата | #8 | Добавлено: 29.03.07 09:03 |
Отправляй при помощи BitBlt рисуок на принтер кусочками в соответствии с размерами листа. Собственно и всех делов.
Собственно я так и делаю. Но проблема в том что я не могу BitBlt скопировать определенную часть рисунка. |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 249094859 Вопросов: 0 Ответов: 310 |
Профиль | Цитата | #9 | Добавлено: 29.03.07 10:03 |
Что значит не можешь? Это как? Что мешает мочь? |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 18 Ответов: 57 |
Профиль | Цитата | #10 | Добавлено: 29.03.07 10:11 |
Я не знаю как !!!
|
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() Вопросов: 38 Ответов: 190 |
Web-сайт: Профиль | Цитата | #11 | Добавлено: 29.03.07 16:05 |
Я не знаю как !!!
Google or MSDN в помощь. Щас сайтов по ВБ-миллион. По С++ - 0. |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() Вопросов: 38 Ответов: 190 |
Web-сайт: Профиль | Цитата | #12 | Добавлено: 29.03.07 16:06 |
ошибся. надо так- Я не знаю как |
Страница: 1 |
|