Головна > Delphi, Програмування > WIA в Delphi. Частина 2. Об’єкт CommonDialog

WIA в Delphi. Частина 2. Об’єкт CommonDialog

Розглянемо деякі об’єкти, що існують в WIA та деякі властивості та методи цих об’єктів. Частково це буде переклад довідкової інформації із Microsoft Docs із пояснюючими коментарями, прикладами вихідного коду та ілюстраціями.

Однак зважайте, що нижченаведена інформація не є вичерпним довідником по WIA, для цього краще звернутися безпосередньо до Microsoft Docs.

CommonDialog

Містить всі методи, які відображають інтерфейси користувача.

ShowAcquireImage

Відображення одного або декількох діалогових вікон, які дозволяють користувачеві отримувати зображення з пристрою. Тобто, в процесі роботи будуть відображатися різні діалогові вікна у певному порядку: вибір пристрою, налаштування його параметрів тощо.

Параметри:

DeviceTypeтипи пристроїв, із якими в подальшому буде працювати метод.

UnspecifiedDeviceType Пристрої будь-якого типу
ScannerDeviceType Сканери
CameraDeviceType Камери
VideoDeviceType Пристрої, що працюють із потоковим відео

Intent – тип інформації, яку має містити зображення.

UnspecifiedIntent Інформація буд-якого типу
ColorIntent Кольорове зображення
GrayscaleIntent Зображення у відтінках сірого
TextIntent Зображення що містить текст (чорнобіле)

Bias – якість зображення.

MinimizeSize Нижча якість для оптимізації розміру файлу зображення
MaximizeQuality Більш висока якість

FormatID – потрібний формат даних, в якому буде надано зображення із пристрою. Звісно, якщо сам пристрій цей формат підтримує. Зазвичай це Bitmap, але деякі пристрої можуть підтримувати і інші формати.

AlwaysSelectDevice – вказує, чи відображати діалогове вікно вибору пристрою.

UseCommonUI – вказує, чи слід використовувати загальний інтерфейс користувача.

CancelError – вказує, чи генерувати виключення у разі скасування користувачем процесу сканування.

Метод повертає об’єкт ImageFile – отримане зображення.

Приклад:


const
  wiaFormatBMP = '{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}';
var
  lCommonDialog: ICommonDialog;
...
  lCommonDialog := CoCommonDialog.Create;
  lImage := lCommonDialog.ShowAcquireImage(UnspecifiedDeviceType, UnspecifiedIntent, MaximizeQuality, wiaFormatBMP, True, True, False);
  if lImage <> nil then
    lImage.SaveFile('image.bmp');

Які ще інтерфеси можна відобразити за допомогою CommonDialog?

ShowAcquisitionWizard

Запускає майстер сканера та камери, який дозволяє вибрати пристрій, налаштувати його параметри та відобразити попередній перегляд сторінки. Єдиний параметр Device позначає позначає з’єднання з обраним пристроєм.

Метод повертає значення типу OleVariant, зазвичай це ImageFile – отримане зображення.

ShowDeviceProperties

Відображає діалогове вікно «Властивості» для вказаного пристрою. Єдиний параметр Device позначає з’єднання з обраним пристроєм.

>

ShowItemProperties

Відображає діалогове вікно Властивості для вказаного елемента.

ShowPhotoPrintingWizard

Запускає майстер друку фотографій.

ShowSelectDevice

Відображає діалогове вікно, яке дозволяє користувачеві вибрати пристрій для отримання зображень.

Метод повертає об’єкт Device – з’єднання з обраним пристроєм.

ShowSelectItems

Відображає діалогове вікно налаштування параметрів сканування, таких як роздільна здатність, кольорова схема, яскравість, контраст та інші. Параметр SingleSelect вказує, чи повинен користувач вибрати лише один елемент.

Метод змінює властивості об’єкту Device, отриманого в якості параметру, відповідно до зроблених користувачем налаштувань.

ShowTransfer

Відображає діалогове вікно процесу передачі даних.

Метод повертає значення типу OleVariant, зазвичай це ImageFile – отримане зображення.

А тепер викликаємо всі інтерфейси послідовно:


const
  wiaFormatBMP = '{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}';
var
  lCommonDialog: ICommonDialog;
  lDevice: IDevice;
  lItems: IItems;
  lImage: IImageFile;
...
lCommonDialog := CoCommonDialog.Create;
// обираємо пристрій
lDevice := lCommonDialog.ShowSelectDevice(UnspecifiedDeviceType, True, False);
if lDevice <> nil then
begin
  // параметри сканування для обраного пристрою
  lItems := lCommonDialog.ShowSelectItems(lDevice, UnspecifiedIntent, MaximizeQuality, False, True, False);
  if lItems <> nil then
  begin
    // отримуємо зображення з пристрою
    lImage := IUnknown(lCommonDialog.ShowTransfer(lItems.Item[1], wiaFormatBMP, False)) as IImageFile;
    if lImage <> nil then
	  lImage.SaveFile('image.bmp');
  end;
end;

Delphi, Програмування , , , , , , , , , ,

  1. Ще немає коментарів.
  1. Немає ще трекбеків.
Вам потрібно увійти, для коментування