喫茶XRAYトップページ

[スレッド全体
]

[2242] 印刷プレビュー制御コンポーネントで画像表示させる際のサイズ取得について!返信 削除
2009/3/16 (月) 19:54:22 KSCHomePage
KSCです。

印刷プレビュー制御コンポーネントに画像を表示させる際に
StretchDrawBitmapやStretchDrawPictのように描画範囲を指定して
縮小・拡大して表示するメソットがありますが、

これを使用する際に当然、描画範囲を指定するのですが、
指定した画像ファイルの大きさを指定したい場合、
どのようにすれば良いのでしょうか?

// ICO->BMP変換
procedure ICOToBMP(var BMP: TBitmap; fname: String);
var
  Ico :TIcon;
begin
  Ico :=TIcon.Create;
  BMP.PixelFormat := pf24bit;
  try
    BMP.Width  := GetSystemMetrics( SM_CXICON );
    BMP.Height := GetSystemMetrics( SM_CYICON );
    Ico.LoadFromFile( fname );
    DrawIconEx(BMP.Canvas.Handle, 0, 0, Ico.Handle, 0, 0, 0, 0, 3);
  finally
   Ico.Free;
  end;
end;

// JPG->BMP変換
procedure JpegToBmp(var BMP: TBitmap; fname: String);
var
  Jpeg: TJpegImage;
begin
  Jpeg := TJpegImage.Create;
  try
    Jpeg.LoadFromFile( fname );
    BMP.Assign( Jpeg );
  finally
    Jpeg.Free;
  end;
end;

procedure GetPrinterDPI(var x, y: Integer);
begin
  x := GetDeviceCaps( Canvas.Handle, LOGPIXELSX );
  y := GetDeviceCaps( Canvas.Handle, LOGPIXELSY );
end;

procedure ImageDisp(Sender: TObject; fname: string; var w, h: Integer);
var
  x, y: Integer;
  str: string;
  bmp: TBitmap;
begin
  w := 0;  h := 0;

  GetPrinterDPI(x, y);

  bmp :=TBitmap.Create;
  try
    str := UpperCase( ExtractFileExt( fname ) );

    if str = '.BMP' then
      bmp.LoadFromFile( fname )
    else
    if str = '.ICO' then
      ICOToBMP(bmp, fname)  // ICO->BMP変換
    else
    if str = '.JPG' then
      JpegToBmp(bmp, fname)  // JPG->BMP変換
    else
      bmp := nil;

    if Assigned( bmp ) then begin
      w := bmp.Width * 25.4 / x;
      h := bmp.Height * 25.4 / y;
    end;
  finally
    bmp.Free;
  end;
end;

のようなソースで、取得しようとしたのですが正確にサイズ取得できません。

ご指導願えないでしょうか?




[2243] Re:印刷プレビュー制御コンポーネントで画像表示させる際のサイズ取得について!返信 削除
2009/3/16 (月) 22:02:58 Mr.XRAY
▼ KSCさん

> のようなソースで、取得しようとしたのですが正確にサイズ取得できません。

コードはまだ十分見ていないのですが,
これ多分ダメだと思います.
というのは,画像を表示する際,メタファイルに埋め込むわけですが,
この時,元となるメタファイルが自分の基準に合わせているのでは
ないかと思います.
間違っていたらゴメンなさい.

でも,後で調べてみます.
おそらく,そうようなことを考えている方が他にもいるのではない
かと思いますので.
これも,先の回転ミラー文字と同様,何か情報がわかったら,サンプル
として追加候補ですね.

[2254] Re2:印刷プレビュー制御コンポーネントで画像表示させる際のサイズ取得について!返信 削除
2009/3/21 (土) 22:33:00 KSCHomePage
▼ Mr.XRAYさん
> ▼ KSCさん
>
> > のようなソースで、取得しようとしたのですが正確にサイズ取得できません。
>
> コードはまだ十分見ていないのですが,
> これ多分ダメだと思います.
> というのは,画像を表示する際,メタファイルに埋め込むわけですが,
> この時,元となるメタファイルが自分の基準に合わせているのでは
> ないかと思います.
> 間違っていたらゴメンなさい.


やはりダメですか〜。
 
> でも,後で調べてみます.
> おそらく,そうようなことを考えている方が他にもいるのではない
> かと思いますので.
> これも,先の回転ミラー文字と同様,何か情報がわかったら,サンプル
> として追加候補ですね.


宜しくお願い致します。

既存の帳票イメージをStretchDrawBitmapやStretchDrawPictを使って、
読み込み「背景」として使う事で、「はめ込み印刷」のような使い方が
出来ないかなと思ったのですが...困っている状態です。

「はめ込み印刷」のような使い方を動画化してみました。
http://kazuyoshisc.sakura.ne.jp/joomla/index.php?option=com_content&view=article&id=29:2009-03-21-12-55-35&catid=5:category-designer&Itemid=3



[2255] Re3:印刷プレビュー制御コンポーネントで画像表示させる際のサイズ取得について!返信 削除
2009/3/21 (土) 23:03:20 Mr.XRAY
▼ KSCさん

> 既存の帳票イメージをStretchDrawBitmapやStretchDrawPictを使って、
> 読み込み「背景」として使う事で、「はめ込み印刷」のような使い方が
> 出来ないかなと思ったのですが...困っている状態です。


これって,もしかして,ここの図3の,こういう感じのことですか?
ここで描画されているのは,郵便の払い込み(振込み?)用紙です.
この用紙の画像は,印刷もできましす,印刷しない様にもできます.

http://mrxray.on.coocan.jp/Delphi/plPrev/T_EnterMainForm.htm

あと,
http://mrxray.on.coocan.jp/Delphi/plTackPrev/T_NumSheet.htm
の図4の各シールでは,ウサギの絵を印刷するようになっています.

間違っていたらゴメンなさい.

[2257] Re4:印刷プレビュー制御コンポーネントで画像表示させる際のサイズ取得について!返信 削除
2009/3/22 (日) 23:34:58 KSCHomePage
▼ Mr.XRAYさん
> ▼ KSCさん
>
> > 既存の帳票イメージをStretchDrawBitmapやStretchDrawPictを使って、
> > 読み込み「背景」として使う事で、「はめ込み印刷」のような使い方が
> > 出来ないかなと思ったのですが...困っている状態です。
>
> これって,もしかして,ここの図3の,こういう感じのことですか?
> ここで描画されているのは,郵便の払い込み(振込み?)用紙です.
> この用紙の画像は,印刷もできましす,印刷しない様にもできます.
>
> http://mrxray.on.coocan.jp/Delphi/plPrev/T_EnterMainForm.htm
>
> あと,
> http://mrxray.on.coocan.jp/Delphi/plTackPrev/T_NumSheet.htm
> の図4の各シールでは,ウサギの絵を印刷するようになっています.
>
> 間違っていたらゴメンなさい.


間違っていません。
おっしゃる通りです。

サンプル「09_EnterFormRealTime」を私のソフトで再現してみました。

再現している最中に3点ほど機能の改善を行いました。
やっぱり自分でデータ作成する事で、分かる問題や改善がありますね!

やはり悩みは、
 1)指定の画像のサイズをミリで取得したい。
 もう1つ
 2)問題の無い画像(サンプルの「HaraikomiPaper.emf」等)もありますが
   画質が悪く描画されてしまう画像もある事。

[2258] Re5:印刷プレビュー制御コンポーネントで画像表示させる際のサイズ取得について!返信 削除
2009/3/23 (月) 00:55:00 KSCHomePage
KSCです。

#2257の追加記事です。

#2257でサンプル「09_EnterFormRealTime」を私のソフトの
「印刷フォームデザイナー」でフォームデータ作成をしましたが、 → @

そのデータを元に残りのソフト
A「情報(入力フォーム)デザイナー」にて、入力フォームのデザインを。
B「レポートデザイナー」にて@データを雛形にデータ入力しました。


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82