mikeo_410


XPSファイルでの座標

  ワードで作ったXPS中では、各ページの先頭が以下のようになっています。

  1. <FixedPage xmlns="http://schemas.microsoft.com/xps/2005/06" 
  2. Width="794" Height="1123" xml:lang="ja-JP">
  3.  <Canvas>
  4.   <Canvas.RenderTransform>
  5.    <MatrixTransform Matrix="1.333333333,0,0,1.333333333,0,0"/>
  6.   </Canvas.RenderTransform>
  1. <FixedPage>のWidth、Height
    用紙サイズで変わる。
  2. <Canvas>のMatrixTransform
    いつも同じ値のよう。

  が、キャンバス内の座標表現に関係します。

1.用紙サイズ

  <FixedPage>のWidth、Height は、用紙サイズをPixel単にで表したものと考え確かめて見ます。上の例は、A4の文書です。
  794 / 96dpi = 8.27inch = 210.08mm
 1123 / 96dpi =11.70inch = 297.12mm
  96dpiでの用紙サイズを表しています。
  1pixel は、1/96inch、0.2646mm です。

2.倍率

  MatrixTransform の Matrix が示しているのは、縦横とも 4/3 を座標の単位にすると言うことです。
  1pixel = 1/96inch でしたが、1/72inchi を単位にします。これは、ポイントを単位にすると言うことです。

3.さて、どうするか

  理屈はわかりました。どうすると便利かを考えます。

3.1.Webのページとして

  最近増えているのは、ブラウザのウインドウサイズを変えても一行の文字数が変わらないページです。おそらく、px(pixel)単位でレイアウトしているのだろうと思っています。
  表示サイズの実寸を制御できるわけの物でもないので、pt(ポイント)でも px でも揃っていればOKでしょう。

3.2.Visual Studioでプログラミングに使う

  入力に使用するワードが、ポイント単位に親和性があるのは理解できますが、プログラミングでは、pixel単位に分があるのも明瞭でしょう。
  イメージのサイズなどもpixelで表示されますし。

3.3.結論

  以上のことから、pixelに変換したいのですが、使われるコントロールの種類がわからないので諦め、ポイントのままで使います。
  もう少し、事情がわかってから挑戦します。

  <FixedPage>のWidth、Height の情報は削除します。
  loose XAMLとして使う場合は、害があっても有益なことはないように思います。
  プログラミングの時も、A4サイズに意味があるとは思えません。
 


mikeo_410@hotmail.com