<< vs2005とMFC | main | vs2005とメモリ使用量 >>
2006.04.24 Monday

vs2005とMapMode

Win32の開発で、前に試したけどうまくいかなかったネタってのはいろいろとあって、その内の1つを再実験してみた。

今回のネタはSetMapMode( dc,MM_ANISOTROPIC )でSetWindowExtEx()とSetViewportExtEx()を使って、画面の拡大・縮小をおこなうというもの。このネタ自体は、skZoomViewやGZoomViewで使ってるネタなんだけど、実は、文字の表示が崩れるって言う問題があった。

ビットマップは普通に拡大・縮小できてるのに、文字だけ、高さは1文字分で横に引き延ばされるような表示のされ方をしてたんだな。で、ちょっと前に作った『長体・平体』のプログラムを使って再実験。すると・・・ あっさりうまくいった罠。


これまでとどこが違うのかというと・・・ 『長体・平体』の実験のために、自分でフォントを作ってるところ? で、さらに追求してみると、どうやら、フォントを作るときのパラメータでスケーリングができるかどうかが決まる、と。

LOGFONT::lfQualityにPROOF_QUALITYを指定した場合『GDIラスタ フォントの場合は、 スケーリングができなくなり、 最も近いサイズを持つフォントが選択されます。』って・・・ APIの説明で、そんな細かいところまで読んでねーよ!

つまり、この部分だけ回避して、自分でフォントを準備すれば問題ないわけだ。

というわけで、実験プログラムはこちら。
gc07 - mapmode1.0-001src.zip
コメント
コメントする








 
この記事のトラックバックURL
トラックバック
Calendar
1234567
891011121314
15161718192021
22232425262728
293031    
<< July 2018 >>
Selected Entries
Categories
Archives
Recent Comment
Links
Profile
Search this site.
Others
Mobile
qrcode
Powered by
30days Album
無料ブログ作成サービス JUGEM