Как правильно отобразить tiff файл на PictureBox - VB

Узнай цену своей работы

Формулировка задачи:

Код который это делает я наконец нашел-достряпал:
Для xp нужно устанавливать и регистрировать wiaaut.dll ,
http://www.microsoft.com/downloads/details.aspx?familyid=a332a77a-01b8-4de6-91c2-b7ea32537e29&displaylang=en
для висты итак есть родная WIA dll.
Все здорово. Код как я его написал будет работать с любой dll (ну обработку ошибки дописать только.)
Проблема такая.
Стандартные tiff-файлы факсов бывают Normal 200х100 и Fine 200х200.
Picture1-это небольшой PictureBox в пропорциях A4.
Если делать вывод не думая то 200х100 отобразится в верхней половине, ляжет по ширине (но сжат в 2 раза по вертикали!).
Как растянуть в 2 раза не напоганив картинку (желат.сразу отображать в этот PictureBox)?
Напоганив можно тупо скопировать ее в ImageBox или как там его со свойством Stretch=true, можно даже сразу ее там отобразить запоров 2/3 кода, но это напоганить сильно.
Подозреваю что PaintPicture но туплю ужасно. Что надо поменять в коде, чтоб 200х100 красиво растянулся в 2 раза (по y) на целый PictureBox и не смазался? (подсчитать Normal или Fine из св-в файла я умею, но в координатах разных не силен, увы.).

Решение задачи: «Как правильно отобразить tiff файл на PictureBox»

textual
Листинг программы
<font color="blue">Dim</font> Img <font color="00AA00">'As ImageFile</font>
<font color="blue">Private</font> <font color="blue">Sub</font> Form_Load()
    PagesAll = <font color="darkblue"><b>0</b></font>
    <font color="blue">On</font> <font color="blue">Error</font> <font color="blue">GoTo</font> ExS
    LoadPict tochkaSTR(Command, Chr(<font color="darkblue"><b>34</b></font>), <font color="teal">""</font>)
    <font color="blue">Me</font>.Caption = PagesAll
    <font color="blue">If</font> PagesAll > <font color="darkblue"><b>0</b></font> <font color="blue">Then</font>
        ShowPage <font color="darkblue"><b>1</b></font>
        TextN.Text = <font color="teal">"1"</font>
    <font color="blue">End</font> <font color="blue">If</font>
ExS:
<font color="blue">End</font> <font color="blue">Sub</font>
<font color="blue">Private</font> <font color="blue">Sub</font> LoadPict(<font color="blue">name</font> <font color="blue">As</font> <font color="blue">String</font>)
    <font color="blue">Set</font> Img = CreateObject(<font color="teal">"WIA.ImageFile"</font>)
    Img.LoadFile <font color="blue">name</font>
    PagesAll = Img.FrameCount
<font color="blue">End</font> <font color="blue">Sub</font>
<font color="blue">Private</font> <font color="blue">Sub</font> ShowPage(pageN <font color="blue">As</font> <font color="blue">Integer</font>)
    <font color="blue">Dim</font> w, h <font color="blue">As</font> <font color="blue">Integer</font>
    <font color="blue">Dim</font> IP <font color="00AA00">'As ImageProcess</font>
    <font color="blue">Dim</font> Img1  <font color="00AA00">'As ImageFile</font>
    <font color="blue">On</font> <font color="blue">Error</font> <font color="blue">GoTo</font> ErrDes:
    <font color="blue">Set</font> IP = CreateObject(<font color="teal">"WIA.ImageProcess"</font>)
    
    <font color="blue">While</font> (IP.Filters.Count > <font color="darkblue"><b>0</b></font>)
        IP.Filters.Remove <font color="darkblue"><b>1</b></font>
    <font color="blue">Wend</font>
    IP.Filters.Add IP.FilterInfos(<font color="teal">"Convert"</font>).FilterID
    IP.Filters(<font color="darkblue"><b>1</b></font>).Properties(<font color="teal">"FormatID"</font>).Value = wiaFormatBMP
    Img.ActiveFrame = pageN
    <font color="blue">Set</font> Img1 = IP.Apply(Img)
    
    w = Img1.<font color="blue">Width</font>
    h = Img1.Height
    <font color="blue">While</font> (IP.Filters.Count > <font color="darkblue"><b>0</b></font>)
        IP.Filters.Remove <font color="darkblue"><b>1</b></font>
    <font color="blue">Wend</font>
    IP.Filters.Add IP.FilterInfos(<font color="teal">"Scale"</font>).FilterID
    IP.Filters(<font color="darkblue"><b>1</b></font>).Properties(<font color="darkblue"><b>1</b></font>).Value = Picture1.ScaleWidth
    <font color="blue">If</font> Img1.VerticalResolution < <font color="darkblue"><b>110</b></font> <font color="blue">Then</font> <font color="00AA00">'204х98</font>
        IP.Filters(<font color="darkblue"><b>1</b></font>).Properties(<font color="darkblue"><b>2</b></font>).Value = Picture1.ScaleWidth * h / w * <font color="darkblue"><b>2</b></font> <font color="00AA00">'Picture1.ScaleHeight</font>
    <font color="blue">Else</font> <font color="00AA00">'204х196</font>
        IP.Filters(<font color="darkblue"><b>1</b></font>).Properties(<font color="darkblue"><b>2</b></font>).Value = Picture1.ScaleWidth * h / w  <font color="00AA00">'Picture1.ScaleHeight</font>
    <font color="blue">End</font> <font color="blue">If</font>
    IP.Filters(<font color="darkblue"><b>1</b></font>).Properties(<font color="darkblue"><b>3</b></font>).Value = False
    <font color="blue">Set</font> Img1 = IP.Apply(Img1)
    w = Img1.<font color="blue">Width</font>
    h = Img1.Height
    <font color="blue">Set</font> Picture1.Picture = Img1.ARGBData.Picture(w, h)
    
    <font color="blue">Set</font> IP = <font color="blue">Nothing</font>
    <font color="blue">Set</font> Img1 = <font color="blue">Nothing</font>
ErrDes:
<font color="blue">End</font> <font color="blue">Sub</font>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.333 из 5
Похожие ответы