Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Comanche

Печать произвольной картинки с гарантией укладки на листе заданного формата

31.05.2010, 21:29. Показов 1752. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Печать произвольной картинки с гарантией укладки на листе заданного формата - как это лучше сделать? Без внешних приложений, конечно.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2010, 21:29
Ответы с готовыми решениями:

Как в салоне фотопечати заказать печать картинки произвольной пропорции?
Например, пишут у себя на сайте, что печать фотографии 10x15 стоит 4 руб. Я нашёл картинку в интернете и в свойствах у неё указано...

Сформировать матрицу произвольной размерности на листе Excel
Здравствуйте! Помогите пожалуйста с последним заданием. В программировании не силен, если не сложно - помогите. Необходимо...

Сформировать матрицы произвольной размерности на рабочем листе Excel
Здравствуйте. Прошу помочь с последним заданием. Нужно сформировать матрицы произвольной размерности на рабочем листе Excel ...

6
Comanche
10.06.2010, 16:16
Никто не знает?!

Пока обошёлся с помощью контрола WebBrowser - гружу в него картинку и уже оттуда печатаю. Может, ещё как можно?
0 / 0 / 0
Регистрация: 13.12.2007
Сообщений: 46
14.06.2010, 23:36
Если PictureBox может читать картинку то так, а если не может то также но читать через какую-нить dll. Если картинка маленькая, то она центруется.

With Printer
w_k = Picture1.ScaleWidth / .ScaleWidth
h_k = Picture1.ScaleHeight / .ScaleHeight
If Picture1.ScaleWidth > .ScaleWidth And w_k > h_k Then
h_prn = Int(Picture1.ScaleHeight / w_k)
.PaintPicture Picture1.Picture, 0, 0, .ScaleWidth, h_prn, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, vbSrcCopy
ElseIf .ScaleHeight < Picture1.ScaleHeight And w_k < h_k Then
w_prn = Int(Picture1.ScaleWidth / h_k)
.PaintPicture Picture1.Picture, 0, 0, w_prn, .ScaleHeight, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, vbSrcCopy
Else
x_pos = Int(((Printer.ScaleWidth - Picture1.ScaleWidth)) / 2)
y_pos = Int(((Printer.ScaleHeight - Picture1.ScaleHeight)) / 2)
.PaintPicture Picture1.Picture, x_pos, y_pos
End If
.EndDoc
End With
0
Comanche
15.06.2010, 11:13
1. 'Если PictureBox может читать картинку' - не понял, что имеется в виду.

2. Смысл кода понятен, спасибо. Буду разбираться. Пока печатает не совсем то, что нужно.
0 / 0 / 0
Регистрация: 13.12.2007
Сообщений: 46
15.06.2010, 20:23
Далеко не все каринки PictureBox может читать, есть у меня один .bmp (как ни странно), который не читается.
0
Comanche
15.06.2010, 20:54
Понятно.
Comanche
25.07.2010, 15:22
Нашёл более удачный код, если кому интересно:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Public Sub PrintPictureToFitPage(Prn As Printer, Pic As Picture)
    Const vbHiMetric As Integer = 8
    Dim PicRatio As Double
    Dim PrnWidth As Double
    Dim PrnHeight As Double
    Dim PrnRatio As Double
    Dim PrnPicWidth As Double
    Dim PrnPicHeight As Double
    
    If Pic.Height >= Pic.Width Then
        Prn.Orientation = vbPRORPortrait
    Else
        Prn.Orientation = vbPRORLandscape
    End If
    
    PicRatio = Pic.Width / Pic.Height
    PrnWidth = Prn.ScaleX(Prn.ScaleWidth, Prn.ScaleMode, vbHiMetric)
    PrnHeight = Prn.ScaleY(Prn.ScaleHeight, Prn.ScaleMode, vbHiMetric)
    PrnRatio = PrnWidth / PrnHeight
    
    If PicRatio >= PrnRatio Then
        PrnPicWidth = Prn.ScaleX(PrnWidth, vbHiMetric, Prn.ScaleMode)
        PrnPicHeight = Prn.ScaleY(PrnWidth / PicRatio, vbHiMetric, Prn.ScaleMode)
    Else
        PrnPicHeight = Prn.ScaleY(PrnHeight, vbHiMetric, Prn.ScaleMode)
        PrnPicWidth = Prn.ScaleX(PrnHeight * PicRatio, vbHiMetric, Prn.ScaleMode)
    End If
    
    Prn.PaintPicture Pic, 0, 0, PrnPicWidth, PrnPicHeight
    
End Sub
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.07.2010, 15:22
Помогаю со студенческими работами здесь

Сформировать матрицы произвольной размерности на рабочем листе Excel
Всем привет.Прошу помочь с последним заданием.Нужно сформировать матрицы произвольной размерности на рабочем листе Excel,но разобраться...

Формирование матрицы произвольной размерности на рабочем листе Excel
Здрастсвуйте! Прошу помочь с двумерными массивами. Нужно сформировать матрицы произвольной размерности на рабочем листе Excel n 0 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru