Пример программы
Полный текст примера можно взять отсюда. Мы рассмотрим только функцию получения данных с TWAIN устройства:
Code: |
procedure TForm1.Accquire1Click(Sender: TObject); var dat: hBitMap; PInfo: PBitMapInfoHeader; Height, Width: integer;
{Функция возведения 2 в степень s} function stp2(s: byte): longint; var m: longint; i: byte; begin m := 2; for i := 2 to s do m := m * 2; stp2 := m; end;
begin {Получаем указатель на графические данные} dat := TWAIN_AcquireNative(Handle, 0); if dat <> 0 then begin {Получаем указатель на область памяти содержащей DIB данные и блокируем область памяти} PInfo := GlobalLock(dat); {Анализируем полученные данные} Height := PInfo.biHeight; Width := PInfo.biWidth; {Узнаем размер полученного изображения в сантиметрах} Wcm.Caption := floatToStrF(100 / PInfo.biXPelsPerMeter * Width, ffNumber, 8, 3) + ' cm'; Hcm.Caption := floatToStrF(100 / PInfo.biYPelsPerMeter * Height, ffNumber, 8, 3) + ' cm'; {Определяем число цветов в изображении} Colors.Caption := floatToStrF(stp2(PInfo.biBitCount), ffNumber, 8, 0) + ' цветов'; {Разблокируем память} GlobalUnlock(dat); {Передаем в битовую матрицу графические данные} {И устанавливаем перехват ошибок} try MyBitMap.Palette := TWAIN_CreateDibPalette(dat); MyBitMap.Width := Width; MyBitMap.Height := Height; TWAIN_DrawDibToDC(MyBitMap.Canvas.Handle, 0, 0, Width, Height, dat, 0, 0); except // Обрабатываем наиболее вероятную ошибку связанную // с не хваткой ресурсов для загрузки изображения on EOutOFResources do MessageDlg('TBitMap: Нет ресурсов для загрузки изображения!', mtError, [mbOk], 0); end; {Отображаем графические данные} Image1.Picture.Graphic := MyBitMap; {Освобождаем память занятую графическими данными} TWAIN_FreeNative(dat); end; end; |
Обработка ошибок необходима, так как объект TBitMap имеет серьезные ограничения на размер создаваемого изображения. При этом производится обработка наиболее вероятной ошибки, в случае возникновения другой ошибки, ее обработка будет передана обработчику по умолчанию. Обработка ошибки в данном случае заключается в выдаче диагностического сообщения, в прикладной программе можно реализовать выполнение любых необходимых действий, например, произвести уменьшение разрешения и повторно подать на загрузку в TBitMap.
- << Назад
- Вперёд
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!