Как правильно отобразить 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 из св-в файла я умею, но в координатах разных не силен, увы.).
Для 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>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д