喫茶XRAYトップページ

[▲前のスレッド]

[640] PageSetupDialogとRichEdit返信 削除
2006/1/17 (火) 22:00:14 bubbles
PageSetupDialogで設定した用紙サイズや余白を取得し、RichEditの内容を印刷
したいのですが、教えてください…。

RichEditのPageRectを使おうと思ったのですが、ヘルプを見るとピクセル単位で指定
とあります。ミリをピクセルに直すにはどのようにしたら良いでしょうか?
また、用紙サイズや向きはどのような方法で設定すれば出来ますでしょうか?

よろしくお願いいたします。

[641] Re:PageSetupDialogとRichEdit返信 削除
2006/1/18 (水) 00:42:08 Mr.XRAY
▼ bubblesさん

寝ようと思って,掲示板の巡回リストを見たら,喫茶XRAYに「未読」が...
では,マスター直々に...

bubblesには付き合っていられませんけど. (^_^;)
・#95;イアログで余白などは取得できているものと仮定します.

> RichEditのPageRectを使おうと思ったのですが、ヘルプを見るとピクセル単位で指定
> とあります。ミリをピクセルに直すにはどのようにしたら良いでしょうか?
> また、用紙サイズや向きはどのような方法で設定すれば出来ますでしょうか?


RichEditの印刷は結構難しいですよ.
ピクセル単位ではないんですね.これが.とりあえず,サンプルプログラム集の
ページを探してみて下さいませ.マスターは眠いので...

# ミリをピクセルに,その逆ができないとちょっと... 頑張って頂かないと
# かなり厳しい現実がまっていますよ.これは比例計算の問題です.

では,また後で.コーヒーでもお飲みになってお待ちください.
http://homepage2.nifty.com/Mr_XRAY/Delphi_VCL_Info.htm
に書いてありますが,マスターはほとんど昼間は店にいませんので,あしからず.

あっ,そうそう,明日と明後日は新年会が入っているので,店にでるのは遅く
なります.一次会で帰ってくる予定ですが.


[642] ミリメートルとピクセル(ドット)値の換算方法返信 削除
2006/1/18 (水) 22:01:13 Mr.XRAY
▼ bubblesさん

どうですか,少しはすすんだでしょうか.

> とあります。ミリをピクセルに直すにはどのようにしたら良いでしょうか?
まず,ピクセル(ドット)とは,たとえば,今私の目の前のPCの画面は
    1280 × 1024 (横のドット数 × 縦のドット数)
となっています.解像度は96dpiとなっています.
dpiとは,dot(s) per inch,つまり1インチ当たり96ドットということです.では,
印刷,プリンタの場合はどうでしょう.

プリンタのカタログなどには,解像度360dpiとか書いてあります.これは1インチ
当たり360の点で印刷するということです.1インチというのは25.4ミリメートルで
すから,用紙の左上(0,0)から25.4ミリメートルの長さの横線を引くには,

     Printer.Canvas.MoveTo(0,0);
     Printer.Canvas.LineTo(360,0);
 
となります.もし10mmの長さの線を引きたい時は...  比例計算で求めて座標値
を計算します.
ここで注意があります.それは,解像度,dpiの値はプリンタによって,また同じ
プリンタでも複数の解像度をもつものがあるということです.つまり,プリンタの
解像度によって,座標値を換算しながら,実行する必要があるということです.

以上が,ミリメートルとピクセル(ドット)の換算の説明です.
TPageSetupDialogでは,余白の値などが,インチまたは1/100mm単位で取得でき
ます.そこで,これらの値を使用するプリンタの解像度からドット値に換算す
ることになります.

参考になればさいわいです.


[643] Re:ミリメートルとピクセル(ドット)値の換算方法返信 削除
2006/1/18 (水) 22:26:53 bubbles
Mr.XRAY(マスター)さん、ありがとうございます。

ここまで丁寧な解説をしていただき、参考にならないはずはありません!!
殆ど解答に近い解説のため、本当に助かりました。

ありがとうございました!!!!

bubbles

[644] Re2:ミリメートルとピクセル(ドット)値の換算方法返信 削除
2006/1/18 (水) 23:59:52 Mr.XRAY
▼ bubblesさん

RichEditの印刷の方法(コード)の説明はどうしましょう.
ご自分で少しやって(挑戦して)みますか?


[645] Re3:ミリメートルとピクセル(ドット)値の換算方法返信 削除
2006/1/19 (木) 00:26:00 Mr.XRAY
▼ bubblesさん

追記です.

>解像度によって,座標値を換算しながら,実行する必要があるということです.
これって,かなり面倒ですよね.
そこで,拙作の印刷プレビュー制御コンポーネントでは特殊な方法を用いて
います.それは,Canvasに描画する時に使用する座標値,たとえば

    Printer.Canvas.LineTo(X,Y);

のX,Yの値として,ピクセル(ドット)値ではなく,0.1mm単位で指定すると,
自動的に内部でドット値に換算してくれる,WindowsのAPIの機能を使用して
います.plPrev.pas内の ScaleInitialize というメソッドでこれを行って
います.少し勉強したら,是非挑戦してみて下さい.
(もちろん,プリンタの解像度は調べる必要があります)

なお,.NET Workframeは,最初から座標値としてインチやmm単位の値を指定
できる機能があります.

[647] Re3:ミリメートルとピクセル(ドット)値の換算方法返信 削除
2006/1/19 (木) 06:28:43 bubbles
おはようございます。

> RichEditの印刷の方法(コード)の説明はどうしましょう.
> ご自分で少しやって(挑戦して)みますか?


ご親切にどうもありがとうございます。
現在はDelphiの勉強中であるため、コードの説明は自分で勉強したいと思います。

ネット上の印刷制御関連のコンポーネントをダウンロードし活用すればそれで良い
話なのですが、それでは身につかないと思い、いろいろコードを書いては試してい
る段階です。


> なお,.NET Workframeは,最初から座標値としてインチやmm単位の値を指定
> できる機能があります


それは知りませんでした。.NET Workframeに関してはいまだ使用したことが無い
もので…。こちらの方も勉強したいと思います。


本当にわざわざありがとうございました。




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