DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ページ設定ダイアログの余白値が指定と異なる値になる

環境/言語:[VB.NET(2003),FW1.1]
分類:[.NET]

(度々すみません・・・。)
PageSetupDialogにおいて、余白(mmと表示されている)を入力して、
ダイアログを閉じたところで余白値にアクセスしてみると、1/10インチ換算
の値が表示されるのですが。
余白を25.4とすると、100(=10インチ)となり、もう一度ダイアログを開く
とテキストボックスは10(あれ、今度はインチ?)となっています。
=ページ設定ダイアログを開く度に、余白が小さくなって(2.54で割られて)
行きます。
こういうものでしょうか。
決まってこう換算されるのであれば、ダイアログを開く前にミリ換算して代入
しておけば多少はごまかせる(割り切れなかったとかではずれるが。)のです
が、自分の環境だけで判断しても仕方ないので。他でも固定的にインチ(や、
1/10インチ)に換算されるものなのでしょうか。

(皆さん、問題なく動作しているのでしょうか?)
■No1983に返信(こど。さんの記事)

(自己です)
.NETでのMarginsクラスは1/100インチ基準のIntegerでした。
見落としてました。すみません。=固定的にインチ系になるんですね。(しかもInteger)

結局、マージンを正確にサポートする場合、.NETの実装上のMarginsは常に0にして、
小数のまま維持できる自作ダイアログを用意して余白を入力して、
   左上をずらすだけならTranslateTransform(単精度小数OK)、
   右や下も細かくやるなら自前で全部計算してクリップを設定する
とかやるということになるのでしょうか。

とりあえず、今は時間がないので、次回開く際には値をCloneで別インスタンスに
バックアップして、2.54Fを掛けた値をセットしてから開くように逃げました。
もちろん端数落ちしていてきれいには戻らないのですが、ダイアログでOK押して
戻った時点で既に1/100インチのIntegerになっているので、どうにもなりません。

ちなみに・・・PageSetupDialogは「NotInheritable」でした。
暇がある時に設定ダイアログ作って、Margins使わないように直すしか・・・。

(一応解決?)
解決済み!
■No1983に返信(こど。さんの記事)
> PageSetupDialogにおいて、余白(mmと表示されている)を入力して、
> ダイアログを閉じたところで余白値にアクセスしてみると、1/10インチ換算
> の値が表示されるのですが。
> 余白を25.4とすると、100(=10インチ)となり、もう一度ダイアログを開く
> とテキストボックスは10(あれ、今度はインチ?)となっています。

以前同じ質問がありました。どうもバグのようですね。

http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=671&no=0&KLOG=2

DOBON.NET | プログラミング道 | プログラミング掲示板