ニュートン メニュー

株式会社ニュートン

マイクロソフトパートナー

YouTube公式チャンネル

体験版ダウンロード

製品案内

ライセンスパック

ライセンスについて

カスタマイズ受付

製品購入ガイド

オンラインショップ
直販ショップ !
ニュートンストアで購入
コンポーネントソース
コンポーネントソースで購入

優待販売・
 キャンペーン情報

ユーザサービス
〔サポートページ〕

サポート体制

お知らせ
・ニュースリリース
・懐かCM
・イベント出展
・製品関連記事

会社概要

個人情報保護方針

お問い合わせ先

 

ニュートンホーム Q&A
ImageKit6 VCL

イメージ処理コンポーネント
ImageKit6 VCL

このページは、ImageKit6 VCL関連のユーザ様より寄せられたご質問の一部とその回答を掲載しております。


【ImageKit6 VCL Q&A索引】

該当する「QNo.」をクリックするとその回答へ移動します。

QNo.

Q.質問

日付
34

Q.Delphi 2007 for Win32に対応していますか?

2007/06/04
33

Q.マルチTiffファイルを作成するにはどうすればよいですか?

2006/09/29
32

Q.サムネイルコントロールのサムネイル画像1個の大きさはどのように決まるのですか?

2006/09/29
31

Q.サムネイルコントロールでExif形式のファイルを参照する場合、Exifに含まれるサムネイル画像を利用しているのでしょうか?

2006/08/22
30

Q.開発環境では正しく動作しますが、配布環境では特定のファイル形式が利用できません。どうすればよいですか?

2006/08/22
29

Q.ディスプレイコントロールの描画領域をTImageにコピーしたいのですが、どうすればよいですか?

2006/07/05
28

Q.スキャンデバイスからプレビュー(もしくは取り込み)を行うと、機種やドライバのバージョンによっては「不正な浮動小数点演算命令」が発生します。どうすればよいですか?

2006/07/05
27

Q.TFrameの上にディスプレイコントロールを配置して、そのフレームが含まれるフォームを閉じるとエラーが発生します。回避するにはどうすればよいですか?

2006/02/20
26

Q.Borland Developer Studio 2006に対応していますか?

2006/02/10
25

Q.Delphiを使用してエフェクトコントロールのメソッドの第一引数にSlice関数を記述してコンパイルすると"Sliceはオープン配列引数としてしか使えません"というエラーが発生しますが、どうすればよいですか?

2006/01/31
24

Q.イメージ編集ツールバーのポップアップメニューのコマンドをコードから実行することはできますか?

2005/09/20
23

Q.プリントコントロールのDrawTextメソッドやDLLのIKDrawText関数でアンド記号(&)を出力する場合はどうすればいいのですか?

2005/08/05
22

Q.イメージ編集ツールバーを使用せずに、コードからベクトルイメージを編集したいのですが可能ですか?

2005/03/23
21

Q.フォームのOnCreateイベントにイメージ編集ツールバーを表示するShowToolBarメソッドを記述し、そのフォームをモーダルで表示するとツールバーのボタンが押せません。どうすればよいですか?

2005/02/09
20

Q.Delphi 2005に対応していますか?

2005/02/04
19

Q.ディスプレイコントロールの階層ラスタイメージのメモリハンドルにテキストなどを描画してもコントロールに表示されないのですが?

2004/11/30
18

Q.サムネイルコントロールに表示されているイメージの総数を取得したいのですが?

2004/11/30
17

Q.プリントコントロールのSetPrintメソッド(DLLの場合はIKSetPrint関数)で保存した情報を印刷ダイアログの初期値として使用したいのですが、どうすればよいですか?

2004/11/30
16

Q.対応しているファイルかどうか調べるにはどうすればよいですか?

2004/11/30
15

Q.VCLで利用する場合にもDLLファイルが必要ですか?

2004/11/30
14

Q.ファイルオープン(セーブ)ダイアログを使用せずに直接ファイルの読み込み(保存)を行いたいのですが、どうすればよいですか?

2004/11/30
13

Q.対応しているDXFのバージョンはいくつでしょうか?

2004/11/30
12

Q.Canon DRスキャナを使用してユーザインタフェース非表示で取り込みを行うと、スキャンした画像の左側に黒い領域が含まれるのですが、回避方法はありますか?

2004/11/30
11

Q.ディスプレイコントロールのイメージ編集ツールバーを使用してスタンプを編集イメージに押すと、その領域が黒く塗り潰されたりスタンプの要素が白く抜けたりするのですが、回避方法はありますか?

2004/11/30
10

Q.スキャンコントロール(もしくはIk6Scan.dllの関数)を使用してデジタルカメラのシャッターを押すことはできますか?

2004/11/30
9

Q.Canon DR-2080Cを使用して、ユーザインタフェースを非表示にし白黒2値で取り込むと、しきい値の設定が有効にならないのですが?

2004/11/30
8

Q.設定した用紙サイズいっぱいに画像を印刷するにはどうすればよいですか?

2004/11/30
7

Q.複数のコマをスキャンできる透過原稿ユニットを使用してフィルムをスキャンしたいのですが、1コマしか読み取れません。どうしてでしょうか?

2004/11/30
6

Q.JPEG形式でファイルに保存しようとしているのですが、上手くいきません。どうしてでしょうか?

2004/11/30
5

Q.スキャナやデジタルカメラなどのTWAINデバイスから画像を取り込む際にUI(ユーザインタフェース)を表示し、UIを閉じずにアプリケーションを終了すると、その後TWAINデバイスが正しく動作しない場合があるのですが?

2004/11/30
4

Q.初期のWindows95やNT4.0で使用するとエラーが発生するのですが?

2004/11/30
3

Q.メモリハンドル(ラスタイメージ)をTPictureやTBitmapとの間でやりとりしたいのですが?

2004/11/30
2

Q.ディスプレイコントロールのイメージ編集ツールバーをカスタマイズできますか?

2004/11/30
1

Q.DLLのサンプルを実行するとメモリ読込違反などのエラーが発生するのですが?

2004/11/30

【ImageKit6 VCL Q&A一覧】

QNo.

Q.質問

日付

A.回答

34

Q.Delphi 2007 for Win32に対応していますか?

2007/06/04

A.申し訳ございませんが、対応しておりません。Delphi 2007 for Win32に対応した「ImageKit7 VCL」をご検討ください。

33

Q.マルチTiffファイルを作成するにはどうすればよいですか?

2006/09/29

A.次の例を参考にしてください。

1.スキャナおよびデジタルカメラから取得した画像を保存する場合
C++Builder
  bool Ret;
  VIkFile1->FileName = "abc.tif"; //ファイル名
  VIkFile1->TiffAppend = true; //マルチTiff

  VIkScan1->TransferMode = vikScanMemory; //or vikScanNative
  Ret = VIkScan1->ScanExec(...);  //スキャン

  //読み取りイベント
  void __fastcall TForm1::VIkScan1AfterScan(TObject *Sender, DWORD DibHandle,
DWORD OrgHandle, int ImageCount, short BitOrder)
  {
    VIkFile1->ImgHandle = DibHandle;
    VIkFile1->SaveFile(vikSaveTIFFNoncompressed);

  }
Delphi
  Ret: Boolean;

  VIkFile1.FileName := 'abc.tif'; //ファイル名
  VIkFile1.TiffAppend := True; //マルチTiff

  VIkScan1.TransferMode := vikScanMemory; //or vikScanNative
  Ret := VIkScan1.ScanExec(...); //スキャン

  //読み取りイベント
  procedure TForm1.VIkScan1AfterScan(Sender: TObject; DibHandle,
OrgHandle: Cardinal; ImageCount: Integer; BitOrder: Smallint);
  begin
    VIkFile1.ImgHandle := DibHandle;
    VIkFile1.SaveFile(vikSaveTIFFNoncompressed);

  end;

2.複数の画像ファイルを1つのファイルに保存する場合
C++Builder
  short i;
  VIkFile2->FileName = "abc.tif"; //ファイル名
  VIkFile2->TiffAppend = true; //マルチTiff

  VIkFile1->LoadPage = 0;   

  //001.jpg ... 005.jpgを1つにまとめる
  for (i = 0; i <= 5; i++)
  {
    VIkFile1->FileName = Format("%.3d", ARRAYOFCONST((i))) + ".jpg"; //ファイル名
    VIkFile1->LoadFile(vikLoad);
   
    VIkFile2->ImgHandle = VIkFile1.ImgHandle;
    VIkFile2->SaveFile(vikSaveTIFFNoncompressed);

   }
Delphi
  i: Smallint;

  VIkFile2.FileName := 'abc.tif'; //ファイル名
  VIkFile2.TiffAppend := True; //マルチTiff

  VIkFile1.LoadPage := 0;   

   //001.jpg ... 005.jpgを1つにまとめる
  for i := 1 to 5 do
  begin
    VIkFile1.FileName := Format('%.3d', [i]) + '.jpg'; //ファイル名
    VIkFile1.LoadFile(vikLoad);
   
    VIkFile2.ImgHandle := VIkFile1.ImgHandle;
    VIkFile2.SaveFile(ikSaveTIFFNoncompressed);

   end;

32

Q.サムネイルコントロールのサムネイル画像1個の大きさはどのように決まるのですか?

2006/09/29

A.表示するサムネイル画像の縦方向の数と横方向の数で決まります。そのため、サムネイルコントロールの大きさが同じであれば、サムネイルの行数と列数が少ない方が描画エリアは相対的に大きくなります。実際にはImageSizeプロパティとサムネイルのコマの大きさにより描画されるサイズが決まります。

31

Q.サムネイルコントロールでExif形式のファイルを参照する場合、Exifに含まれるサムネイル画像を利用しているのでしょうか?

2006/08/22

A.ImageSizeプロパティの値がExifに含まれるサムネイル画像の縦と横のピクセルよりも小さい場合は、Exif内のサムネイル画像を利用しております。

30

Q.開発環境では正しく動作しますが、配布環境では特定のファイル形式が利用できません。どうすればよいですか?

2006/08/22

A.配布環境にそのファイル形式を利用する"Ik6***.dll"(***はファイル形式)が存在するかどうか確認し、存在しない場合は該当ファイルをコピーしてください。

1.実行時パッケージをご利用の場合
bplファイルと同じフォルダに該当するdllファイルが存在するか?
2.設計時パッケージをご利用の場合
exeファイルと同じフォルダ、もしくはパスの通ったフォルダに該当するdllファイルが存在するか?

29

Q.ディスプレイコントロールの描画領域をTImageにコピーしたいのですが、どうすればよいですか?

2006/07/05

A.次のコードを参考にしてください。

C++Builder
  VIkDisp1->EditEnable = true;

  Image1->Width  = VIkDisp1->ClientWidth;
  Image1->Height = VIkDisp1->ClientHeight;

  StretchBlt(Image1->Canvas->Handle, 0, 0, Image1->Width, Image1->Height,
VIkDisp1->HdcMemory, 0, 0, VIkDisp1->ClientWidth, VIkDisp1->ClientHeight,
cmSrcCopy);

  VIkDisp1->EditEnable = false;
Delphi
  VIkDisp1.EditEnable = True;

  Image1.Width  = VIkDisp1.ClientWidth;
  Image1.Height = VIkDisp1.ClientHeight;

  StretchBlt(Image1.Canvas.Handle, 0, 0, Image1.Width, Image1.Height,
VIkDisp1.HdcMemory, 0, 0, VIkDisp1.ClientWidth, VIkDisp1.ClientHeight,
cmSrcCopy);

  VIkDisp1.EditEnable := False;

28

Q.スキャンデバイスからプレビュー(もしくは取り込み)を行うと、機種やドライバのバージョンによっては「不正な浮動小数点演算命令」が発生します。どうすればよいですか?

2006/07/05

A.TWAINドライバの不具合が考えられますので、新しいバージョンのTWAINドライバを適用してください。それでも現象が再現する場合は、FPU例外を無効にしてお試しください。

VCLの例:
C++Builder
  VIkScan1->FpuException = true;
  VIkScan1->ScanExec();
Delphi
  VIkScan1.FpuException := True;
  VIkScan1.ScanExec();

DLLの例:
C++Builder
  Word Saved8087CW = Default8087CW;
  Set8087CW(0x133f);
  IKScanExec(...);
  Set8087CW(Saved8087CW);

Delphi

var
  Saved8087CW: Word;

  Saved8087CW := Default8087CW;
  Set8087CW($133f);
  IKScanExec(...);
  Set8087CW(Saved8087CW);

27

Q.TFrameの上にディスプレイコントロールを配置して、そのフレームが含まれるフォームを閉じるとエラーが発生します。回避するにはどうすればよいですか?

2006/02/20

A.2006/02/10付けで公開したモジュールをご利用ください。

26

Q.Borland Developer Studio 2006に対応していますか?

2006/02/10

A.2006/02/10付けで対応モジュールを公開いたしました。なお、C++BuilderとDelphi for Win32用プロジェクトのみの対応となります。

25

Q.Delphiを使用してエフェクトコントロールのメソッドの第一引数にSlice関数を記述してコンパイルすると"Sliceはオープン配列引数としてしか使えません"というエラーが発生しますが、どうすればよいですか?

2006/01/31

A.次のコードを参考にしてください。×はエラーが発生するコードで○は正しくコンパイルできるコードを表します。

・Move手続きを使用する
×
VIkEffect1.SelectImage(Slice(Pt, Points), 255, 255, 255);

var Pt_Slice: array of TPoint;
SetLength(Pt_Slice, Points);
Move(Pt, Pt_Slice[0], SizeOf(TPoint) * Points);
VIkEffect1.SelectImage(Pt_Slice, 255, 255, 255);


・Slice関数をメソッドの引数に直接渡さず、別の関数(手続き)の引数として渡す
×
VIkEffect1.SelectImage(Slice(Pt, Points), 255, 255, 255);

SelectImageSub(Slice(Pt, Points));
procedure TForm1.SelectImageSub(const Pt: array of TPoint);
begin
  VIkEffect1.SelectImage(Pt, 255, 255, 255);
end;

24

Q.イメージ編集ツールバーのポップアップメニューのコマンドをコードから実行することはできますか?

2005/09/20

A.ポップアップメニューのコマンドを公開していないため、コードから実行することはできません。

23

Q.プリントコントロールのDrawTextメソッドやDLLのIKDrawText関数でアンド記号(&)を出力する場合はどうすればいいのですか?

2005/08/05

A.アンド記号はその次に続く文字のショートカットキー(下線付き文字)になりますので、アンド記号を直接出力する場合は連続して記述してください。(例:"&&")
また、縦書きによる出力は2005/08/05付けで公開したモジュールをご利用ください。

22

Q.イメージ編集ツールバーを使用せずに、コードからベクトルイメージを編集したいのですが可能ですか?

2005/03/23

A.ベクトルイメージに関する描画コマンドを公開していないため、コードから直接編集することはできません。

21

Q.フォームのOnCreateイベントにイメージ編集ツールバーを表示するShowToolBarメソッドを記述し、そのフォームをモーダルで表示するとツールバーのボタンが押せません。どうすればよいですか?

2005/02/09

A.ディスプレイコントロールを配置したフォームをモーダルで表示する場合は、フォームを表示した後でイメージ編集ツールバーを表示するようにしてください。

20

Q.Delphi 2005に対応していますか?

2005/02/04

A.2005/02/04付けで対応モジュールを公開いたしました。なお、Win32用プロジェクトのみの対応となります。

19

Q.ディスプレイコントロールの階層ラスタイメージのメモリハンドルにテキストなどを描画してもコントロールに表示されないのですが?

2004/11/30

A.階層ラスタイメージの場合、RasterのImgHandleプロパティにメモリハンドルを設定した段階で透過情報を考慮するため、その後で描画してもコントロールには描画されません(メモリハンドルの内容は更新されています)。
そのため、次のように一度メモリハンドルを変数に設定してから描画を行い、その値をImgHandleプロパティに設定してください。

C++Builder

UINT ImgHandle;
bool Ret;

//既に基本ラスタイメージが設定済みであることを前提に記述しています。
ImgHandle = VIkFile1->ImgHandle; //ロードした画像
if (ImgHandle == 0) return;

VIkPrint1->ClearProperty();
VIkPrint1->FontName = "MS Pゴシック";
VIkPrint1->TextForeColor = clRed;
VIkPrint1->FontSize = 10;
VIkPrint1->FontBold = true;
VIkPrint1->FontItalic = true;
VIkPrint1->Transparent = true;
VIkPrint1->Text = "テキスト";
Ret = IkPrint1->TextOut(ImgHandle, 20, 20, vikMemoryHandle);

VIkDisp1->Raster[0]->EnableTrans = true;
VIkDisp1->Raster[0]->TransBlue = 255;
VIkDisp1->Raster[0]->TransGreen = 255;
VIkDisp1->Raster[0]->TransRed = 255;
VIkDisp1->Raster[0]->ShowInDisp = true;
VIkDisp1->Raster[0]->ImgHandle = ImgHande; //テキストを追加した画像
VIkDisp1->Refresh();
Delphi
ImgHandle: THandle;
Ret: Boolean;

//既に基本ラスタイメージが設定済みであることを前提に記述しています。
ImgHandle := VIkFile1.ImgHandle; //ロードした画像
if ImgHandle = 0 then Exit;

VIkPrint1.ClearProperty;
VIkPrint1.FontName := 'MS Pゴシック';
VIkPrint1.TextForeColor := clRed;
VIkPrint1.FontSize := 10;
VIkPrint1.FontBold := True;
VIkPrint1.FontItalic := True;
VIkPrint1.Transparent := True;
VIkPrint1.Text := 'テキスト';
Ret := VIkPrint1.TextOut(ImgHandle, 20, 20, vikMemoryHandle);

VIkDisp1.Raster[0].EnableTrans := True;
VIkDisp1.Raster[0].TransBlue := 255;
VIkDisp1.Raster[0].TransGreen := 255;
VIkDisp1.Raster[0].TransRed := 255;
VIkDisp1.Raster[0].ShowInDisp := True;
VIkDisp1.Raster[0].ImgHandle := ImgHande; //テキストを追加した画像
VIkDisp1.Refresh;

18

Q.サムネイルコントロールに表示されているイメージの総数を取得したいのですが?

2004/11/30

A.ShowThumbImageイベントの引数MaxImageを参照してください。

17

Q.プリントコントロールのSetPrintメソッド(DLLの場合はIKSetPrint関数)で保存した情報を印刷ダイアログの初期値として使用したいのですが、どうすればよいですか?

2004/11/30

A.下記のコードを参考にしてください。

VCLの例:
C++Builder
bool Ret;

VIkPrint1->PrinterName = "";
VIkPrint1->PrintFileName = "C:\\Ik6\\IkPrn.Ik";
Ret = VIkPrint1->GetDevModeHandle();
if (Ret == false) return;
VIkPrint1->GetDevModeInfo();
//必要に応じてOptions,PrintRangeプロパティなどを設定
Ret = VIkPrint1->PrintDlg();
VIkPrint1->ReleaseDevModeHandle();
if (Ret == false) return;
//以降に印刷処理を記述
Delphi
Ret: Boolean;

VIkPrint1.PrinterName := '';
VIkPrint1.PrintFileName := 'C:\Ik6\IkPrn.Ik';
Ret := VIkPrint1.GetDevModeHandle;
if Ret = False then Exit;
VIkPrint1.GetDevModeInfo;
//必要に応じてOptions,PrintRangeプロパティなどを設定
Ret := VIkPrint1.PrintDlg;
VIkPrint1.ReleaseDevModeHandle;
if Ret = False then Exit;
//以降に印刷処理を記述

DLLの例:
C++Builder
HDC hDC;
HANDLE DevMode;
IKPRINT_DIALOG IkPrnDlg;

DevMode = IKGetDevModeHandle("", "C:\\Ik6\\IkPrn.Ik");
if (!DevMode) return;
memset(&IkPrnDlg, 0, sizeof(IkPrnDlg));
hDC = IKPrintDlg(Form1->Handle, DevMode, &IkPrnDlg);
IKReleaseDevModeHandle(DevMode);
if (!hDC) return;
//以降に印刷処理を記述
Delphi
DC: HDC;
DevMode: THandle;
IkPrnDlg: IKPRINT_DIALOG;

DevMode := IKGetDevModeHandle('', 'C:\Ik6\IkPrn.Ik');
if DevMode = 0 then Exit;
FillChar(IkPrnDlg, SizeOf(IkPrnDlg), 0);
//必要に応じてIkPrnDlgのOptions,PrintRangeなどを設定
DC := IKPrintDlg(Form1.Handle, DevMode, IkPrnDlg);
IKReleaseDevModeHandle(DevMode);
if DC = 0 then Exit;
//以降に印刷処理を記述

16

Q.対応しているファイルかどうか調べるにはどうすればよいですか?

2004/11/30

A.ファイルコントロールのGetImagefileTypeメソッドを実行し、FileTypeプロパティを参照してください。未対応の形式であれば0が設定されます。(DLLの場合はIKFileTypeを実行し、IKFILE_INFO構造体のFileTypeを参照のこと)

15

Q.VCLで利用する場合にもDLLファイルが必要ですか?

2004/11/30

A.必要です。必要なDLLファイルについてはプログラミングマニュアルの「作成したアプリケーションの配布」のページをご覧ください。なお、DLLファイルが存在しない場合はメソッドの実行に失敗します。

14

Q.ファイルオープン(セーブ)ダイアログを使用せずに直接ファイルの読み込み(保存)を行いたいのですが、どうすればよいですか?

2004/11/30

A.ファイルコントロールのFileNameプロパティにファイル名を設定して、LoadFileメソッドもしくはSaveFileメソッドを実行してください。(DLLの場合は、Ik6File.dllの読み込みもしくは保存関数の引数でファイル名を指定)

13

Q.対応しているDXFのバージョンはいくつでしょうか?

2004/11/30

A.GXVとなりますが、その中でも対応していない項目がいくつかあります。詳しくはPDFマニュアルの「動作環境」のページをご覧ください。

12

 

Q.Canon DRスキャナを使用してユーザインタフェース非表示で取り込みを行うと、スキャンした画像の左側に黒い領域が含まれるのですが、回避方法はありますか?

2004/11/30

A.PaperSize=0で、かつスキャナが対応している最大サイズよりも小さいサイズの原稿を取り込むと、スキャンした画像の左側に黒い領域が含まれます。これはドライバの仕様になりますが、DRスキャナは定型サイズに対応しているため、PaperSizeに0以外(サポートしている値は機種により異なります)を設定して取り込みを行うことで現象を回避できます。

11

 

Q.ディスプレイコントロールのイメージ編集ツールバーを使用してスタンプを編集イメージに押すと、その領域が黒く塗り潰されたりスタンプの要素が白く抜けたりするのですが、回避方法はありますか?

2004/11/30

A.OSによって回避方法が異なります。

Windows95/98/Me

編集イメージが白黒2値(1ビット)の場合に発生いたしますので、編集イメージを4ビット以上に変換して処理してください。
WindowsNT4.0/2000/XP
編集イメージが白黒2値(1ビット)で、StampTransBlue,StampTransGreen,StampTransRedプロパティが0以外の場合に発生いたしますので、StampTransBlue,StampTransGreen,StampTransRedプロパティを0に設定して処理してください。

10

 

Q.スキャンコントロール(もしくはIk6Scan.dllの関数)を使用してデジタルカメラのシャッターを押すことはできますか?

2004/11/30

A.できません。あくまでデジタルカメラで撮影された画像をTWAIN経由で取得する機能のみです。

9

 

Q.Canon DR-2080Cを使用して、ユーザインタフェースを非表示にし白黒2値で取り込むと、しきい値の設定が有効にならないのですが?

2004/11/30

A.DR-2080Cでは、しきい値の機能を明るさで代用しているため、ThresholdではなくBrightnessを使用してください。

8

 

Q.設定した用紙サイズいっぱいに画像を印刷するにはどうすればよいですか?

2004/11/30

A.GetPaperSizeで有効印字領域を取得し、ImageOutで出力します。

VCLの例:
C++Builder
bool Ret;
int ALef, ATop, ARight, ABottom, AWidth, AHeight;

//用紙サイズ及び印字有効領域を取得
Ret = VIkPrint1->GetPaperSize(DC, ALeft, ATop, ARight, ABottom, AWidth, AHeight, (short)vikPrinter);
//有効領域いっぱいに印字
Ret = VIkPrint1->ImageOut(DC, ImgHandle, 0, 0, ARight - ALeft, ABottom - ATop, false, true, vikPrinter);
Delphi
Ret: Boolean;
ALef, ATop, ARight, ABottom, AWidth, AHeight: Integer;

//用紙サイズ及び印字有効領域を取得
Ret := VIkPrint1.GetPaperSize(DC, ALeft, ATop, ARight, ABottom, AWidth, AHeight, Smallint(vikPrinter));
//有効領域いっぱいに印字
Ret := VIkPrint1.ImageOut(DC, ImgHandle, 0, 0, ARight - ALeft, ABottom - ATop, False, True, vikPrinter);

DLLの例:
C++Builder
BOOL Ret;
RECT Rect1, Rect2;
long AWidth, AHeight;

//用紙サイズ及び印字有効領域を取得
Ret = IKGetPaperSize(DC, &Rect1, &AWidth, &AHeight, 1);
//有効領域いっぱいに印字
Rect2.left = 0;
Rect2.top = 0;
Rect2.right = Rect1.right - Rect1.left;
Rect2.bottom = Rect1.bottom - Rect1.top;
Ret = IKImageOut(DC, ImgHandle, &Rect2, FALSE, TRUE, 1);
Delphi
Ret: LongBool;
Rect1, Rect2: TRect;
AWidth, AHeight: Longint;

//用紙サイズ及び印字有効領域を取得
Ret := IKGetPaperSize(DC, Rect1, AWidth, AHeight, 1);
//有効領域いっぱいに印字
Rect2.Left := 0;
Rect2.Top := 0;
Rect2.Right := Rect1.Right - Rect1.Left;
Rect2.Bottom := Rect1.Bottom - Rect1.Top;
Ret := IKImageOut(DC, ImgHandle, Rect2, False, True, 1);

7

Q.複数のコマをスキャンできる透過原稿ユニットを使用してフィルムをスキャンしたいのですが、1コマしか読み取れません。どうしてでしょうか?

2004/11/30

A.UiModeプロパティにvikScanUIを設定して、スキャンコントロールのイベント(DLLはユーザ関数)でWindowsのメッセージを処理しないようにしてください。(たとえば、Application.ProcessMessages()など)

6

Q.JPEG形式でファイルに保存しようとしているのですが上手くいきません。どうしてでしょうか?

2004/11/30

A.JPEGとして保存できるのは8ビットグレースケールと24ビットカラーのイメージが対象になります。それ以外のイメージの場合は一度該当する色数に変換してから保存する必要があります。(詳しくはマニュアル・ヘルプを参照のこと)

5

Q.スキャナやデジタルカメラなどのTWAINデバイスから画像を取り込む際にUI(ユーザインタフェース)を表示し、UIを閉じずにアプリケーションを終了すると、その後TWAINデバイスが正しく動作しない場合があるのですが?

2004/11/30

A.ScanExecメソッド(DLLはIKScanExec)が終了していない状態でアプリケーションを終了すると、TWAINに対する適切な処理が行われない状態となります。そのため、メソッドもしくは関数が終了するまではアプリケーションを終了させないように制御してください。

4

Q.初期のWindows95やNT4.0で使用するとエラーが発生するのですが?

2004/11/30

A.該当するPCにInternet Explorer 4.0以上をインストールしてから、お試しください。

3

 

Q.メモリハンドル(ラスタイメージ)をTPictureやTBitmapとの間でやりとりしたいのですが?

2004/11/30

A.いくつかの方法があります。
「ImageKit6 VCL<-->TPicture」
・コモンコントロールのPictureプロパティを使用する。

「ImageKit6 VCL-->TBitmap」
・コモンコントロールのBitmapFromDibメソッド(DLLはIKBitmapFromDib)を使用する。
・クリップボードを使用する。
・TBitmapで読める形式のファイルで渡す。
「ImageKit6 VCL<--TBitmap」
・コモンコントロールのDibFromBitmapメソッド(DLLはIKDibFromBitmap)を使用する。
・クリップボードを使用する。
・ImageKit6 VCLで読める形式のファイルで渡す。

2

Q.ディスプレイコントロールのイメージ編集ツールバーをカスタマイズできますか?

2004/11/30

A.できません。

1

Q.DLLのサンプルを実行するとメモリ読込違反などのエラーが発生するのですが?

2004/11/30

A.ImageKit6 VCLをインストールしたフォルダの階層化にあるXXXX\SystemフォルダのDLLファイルをパスの通ったフォルダもしくはサンプルと同じフォルダにコピーしてください。(XXXXはC++Builder6やDelphi7など)
※同様な記述がマニュアルの「インストール」のページにもあります。

Copyright (C) NEWTONE Corporation. All rights reserved.