Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как заставить принтер растянуть картинку? Добавлено: 04.05.05 14:14  

Автор вопроса:  Дилетант
У меня есть картинка в Image 841х595 pix, разр. 72 (нотный пример). Надо её распечатать. Пока что на принтере выходит крошечная миниатюрка в уголке. Попробовал применить
Printer.Orientation = 2
Printer.ScaleX(841, 3, 7) = 29.67
Printer.ScaleY(595, 3, 7) = 20.99
Не работает.
КАК ЗАСТАВИТЬ ПРИНТЕР РАСТЯНУТЬ КАРТИНКУ?

ЗЫ Вообще-то почему-то практически нет инфы на эту тему. Или я просто не нашёл.

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Дилетант



Вопросов: 13
Ответов: 30
 Профиль | | #1 Добавлено: 04.05.05 17:22
Эту задачу, в общем-то, решил методом Printer.PaintPicture. "Моторчик" запущен, работаю над его управлением. Возможно, снова возникнут вопросы. А вообще спасибо, здорово помогаете.

Ответить

Номер ответа: 2
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #2 Добавлено: 04.05.05 18:57
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

Private Sub Command1_Click()
    PrintPictureToFitPage Printer, Picture1.Picture
End Sub

Private Sub Form_Load()
    Set Picture1.Picture = LoadPicture(App.Path + "\PictureToPrint.jpg";)
End Sub

Ответить

Номер ответа: 3
Автор ответа:
 Дилетант



Вопросов: 13
Ответов: 30
 Профиль | | #3 Добавлено: 05.05.05 13:41
Comanche

А за это - отдельное персональное спасибо!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам