■15167 / ) |
Re[6]: C#-画像の回転処理について |
□投稿者/ ざーぼん (5回)-(2008/03/06(Thu) 00:31:12)
|
>Jitta on the way さん >>>長さが一致しないとは、どれくらいのズレがあるのでしょうか。 >>だいたい1cm〜1.5cm程度のズレがありました。 >>※ディスプレイの解像度で大分変わるみたいですが… >> > > んと、上の Bitmap は、ピクセル数で用意していると思います。で、ここは cm ? > プログラム内で使っている単位が統一されていますか? > > No1507 のコードだと、img には回転後のイメージがはいっているのですよね?これのサイズがすでにズレているということ?
プログラム内での処理単位はピクセルで統一されています。
ごめんなさい、若干誤解があるようです。 プログラム上での長さ(ピクセル)には特に問題ありません。 幅:高さが800×600(ピクセル)の画像をRotateFlipメソッドで回転させれば、プログラム上での幅・高さは600×800(ピクセル)になります。 「長さが一致しない」というのは、実際に画面上に表示した際の「見た目」の話になります。 例えば800×600の画像を画面に表示した際「見た目の幅」が20cmだとして、その画像を90度回転させます。 この時に、回転後の画像(600×800)の「高さ」と回転前の画像の「幅」は同じ800ピクセルなのですが、 回転後の画像の「見た目の高さ」は21cmと異なってしまうので、これをなんとか調節できないものかというのが本題になります。
説明が下手糞で申し訳ありません。 そもそも「見た目の」という曖昧な表現がよく無かったですね…
組込系汐涙餅杆湫マ さん(組込系プログラマさん?)がおっしゃる様に >解像度によって、1ドットが正方形じゃ無くなることもある というのが原因なのかな、と思います。
自分なりに色々と調べてみて、画面の物理的な大きさと、解像度から1mm辺りのピクセル数を算出すれば・・・と思ったのですが 「画面の物理的な大きさ」がまず取得できませんでした。 APIのGetDeviceCapsを使って GetDeviceCaps(デスクトップのウィンドウハンドル, HORZSIZE) GetDeviceCaps(デスクトップのウィンドウハンドル, VERTSIZE) で画面の物理サイズをミリメートル単位で取得できる、らしいのですが、 なぜか画面の解像度を変えるとGetDeviceCapsで取得できる値も変化してしまいます。
ちなみにこの辺りの処理は下記サイトを参考にしました。 http://www5d.biglobe.ne.jp/~tomoya03/shtml/vbapi/GetDevIn.htm http://homepage1.nifty.com/kurichan/html/tips32.htm
長くなったので1回投稿します。
|
|