投稿日 | : 2003/05/22(Thu) 15:40 |
投稿者 | : だいすけ |
Eメール | : daisuke-k@vanskg.jp |
URL | : |
タイトル | : 表示の拡大縮小について |
そういうことなんですけどね。
それだと、1/4倍したPictureBoxに対しての描画はなんら問題ないかも知れないですが、
その1/4倍した画像を2倍、4倍していくと、その画像は段だん劣化していっちゃいますよね?
だから、拡大や縮小を行ったPictureBoxに対しては描画は行っても
意味のないことになりますよね?
おそらく、拡大縮小を行っただけで画像がきたなくなる
ペイントなんで誰も使いたくないですもの。。。
だから、画像を描画するためだけのPictureBoxと描画してるように見えるようにするための
表示する用のPictureBoxを用意し、100%以外の画像に描画が行われようとしたときは、
今のキャンバスが100%に対して何%か調べ、MouseDown-Move-Upされた座標に対して、
その比率をかけてかけてやります。
その比率をかけてやることで、100%のPictureBoxの座標系にかわりますよね?
それで100%の縮尺のPictureboxに対して描画を行い、StretchBltで表示用のキャンバスに返してやるという作業をしてるわけです。
でも、このとき。PictureBox(描画用)のleft-top,left+width,top+heightの位置を全てStretchBlt
すると、転送しようとしてる画像が大きすぎるため、処理が遅く、最後にはとまってしまうわけです。
だから、100%のキャンバスに対して描画を行い、拡大縮小の表示用のキャンバスにデータを転送するときに、描画を行った部位のみ転送してやれば、問題は解消されると考えたのですが、
表示用のキャンバスの座標と描画用のキャンバスの座標をどうやってとっていいのかわからないんです。
やっぱ、まだ分かりにくいですかね。。。