;
帖子
3919 
精华
积分
11710 
鱼币
0 ¥ 
来自
大连 
在线时间
1858 小时 
注册时间
2007-6-11 
最后登录
2009-10-20 

贴图大师勋章新人进步勋章宣传大使勋章论坛元老勋章

3
发表于 2009-1-5 19:48 | 只看该作者
MFC 鎵撳嵃棰勮 鏄犲皠妯″紡 鍧愭爣鍙樻崲 - 缂栫▼搴 - Powered by SupeSite

浣犵殑浣嶇疆锛缂栫▼搴 >> 璧勮 >> VC >> 鎵撳嵃 >> 璇︾粏鍐呭 鍦ㄧ嚎鎶曠ǹ

MFC 鎵撳嵃棰勮 鏄犲皠妯″紡 鍧愭爣鍙樻崲

鍙戝竷: 2008-6-26 12:38 |  浣滆: admin |   鏌ョ湅: 52娆

MFC鎻愪緵浜嗕竴涓鏋舵х殑鎵撳嵃鍜屾墦鍗伴瑙堝姛鑳戒唬鐮侊紝瀹冪殑鍩烘湰鎬濇兂鏄皢瀹為檯鏄剧ず鍜屾墦鍗版枃妗g殑浠g爜鍚堜簩涓轰竴锛屽嵆閮界敱姝ゆ枃妗e叧鑱旂殑CView涓殑OnDraw(CDC *pDC)鏉ュ鐞嗭紝鐢盡FC妗嗘灦鏍规嵁鐢ㄦ埛鐨勬搷浣滄潵鍐冲畾浼犺繘鏉ョ殑pDC鏄寚鍚戝睆骞曡繕鏄墦鍗版満锛屽綋pDC鎸囧悜灞忓箷璁惧锛屽氨鍦ㄥ睆骞曚笂鏄剧ず鏂囨。锛屽綋鎸囧悜鎵撳嵃鏈鸿澶囨椂灏辨墦鍗版枃妗c傝繖浜涢兘寰堝ソ鐞嗚В锛屼絾鏄紝褰撴垜浠鎵撳嵃棰勮鏃讹紝浼犺繘鏉ョ殑pDC灏辨湁浜涚壒鍒簡銆傚洜涓烘墦鍗伴瑙堟槸鍦ㄥ睆骞曚笂杩涜鐨勶紝鎵浠ラ氬父鎴戜滑浼氳涓鸿繖鏃朵紶杩涙潵鐨刾DC涓瀹氫篃鏄睘浜庡睆骞旸C涓绫荤殑銆備絾鏄叾瀹炰笉鐒讹紝杩欎釜pDC鏄牴鎹綋鍓嶉粯璁ょ殑鎵撳嵃鏈虹殑灞炴ф潵鏋勯犵殑銆備妇涓緥瀛愶紝鎴戠殑璁$畻鏈轰笂瀹夎浜嗕竴涓墦鍗版満锛屽畠鐨勯粯璁ゆ墦鍗扮焊鏄疉4澶у皬(210mm X 297mm),鑰屽畠鐨勯粯璁ゅ垎杈ㄧ巼鏄1200dpi銆傚綋鎵撳嵃棰勮鏃禖view::OnDraw鍑芥暟涓殑pDC鎸囧悜鐨勫氨鏄偅涓敤鏉ラ瑙堣緭鍑虹殑DC锛岀幇鍦ㄦ垜浠皟鐢╬DC->GetDeviceCaps(HORZSIZE),pDC->GetDeviceCaps(VERTSIZE)锛岃繖涓や釜鍑芥暟鐢ㄦ潵鍙栧緱DC鏄剧ず鍖哄煙鐨勫ぇ灏忥紝浠ユ绫充负鍗曚綅锛屽緱鍒扮殑杩斿洖鍊间负210鍜297锛岃繖鎭板ソ灏辨槸A4绾哥殑澶у皬銆傛帴鐫鍐嶈皟鐢╬DC->GetDeviceCaps(HORZRES),pDC->GetDeviceCaps(VERTRES)锛岃繖涓や釜璋冪敤杩斿洖鐨勪篃鏄疍C鏄剧ず鍖哄煙鐨勫ぇ灏忥紝涓嶈繃鍗曚綅鏄薄绱(鎴栬呰鏄偣dot)锛屽緱鍒扮殑鍊兼槸9917鍜14031銆傝鎴戜滑鐪嬬湅杩欎袱涓间笌涓婇潰鐨210鍜297鏈変粈涔堝叧绯汇1鑻卞绛変簬25.4姣背锛岄偅涔210姣背鐨勯暱搴︽寜鐓1200dpi鐨勫垎杈ㄧ巼鑳藉绾冲灏戠偣锛熷綋鐒舵槸210/25.4脳1200锛岀畻绠楃湅绛変簬澶氬皯锛熸病閿欙紝灏辨槸9917宸﹀彸(瀹為檯鏄9921.259鈥︹)锛屽悓鏍峰彲浠ュ皢297鎹㈢畻鎴14031銆

鐜板湪鏉ョ湅鐪嬪彟澶栦竴涓棶棰樸傚綋鎴戜滑鐢∕emDC.CreateCompatibleDC(pDC)鏉ュ垱寤轰竴涓笌pDC鍏煎鐨勫唴瀛楧C鏃讹紝璋冪敤GetDeviceCaps(HORZSIZE)绛夊嚱鏁板緱鍒扮殑鍊兼槸鍚︿笌pDC鐨勪竴鏍峰憿锛熺瓟妗堟槸涓嶄竴鏍枫傚鍐呭瓨DC璋冪敤涓婅堪4涓嚱鏁板緱鍒扮殑鍊煎垎鍒槸320鍜240(Windows涓鑸浐瀹氳繑鍥炶繖涓や釜鏁板)锛1024鍜768(杩欐鏄睆骞曠殑鍒嗚鲸鐜)銆傚亣濡俻DC鐨勬槧灏勬ā寮忔槸MM_LOMETRIC锛岄偅涔圡emDC鐨勬槧灏勬ā寮忎細鍜屽畠涓鏍峰悧锛熻繕鏄笉涓鏍枫侻emDC鍦ㄥ垰鍒涘缓鐨勬椂鍊欐槧灏勬ā寮忓氨鏄粯璁ょ殑MM_TEXT锛岃屼笉浼氬拰pDC涓鏍枫傞偅涔堝綋鎵ц濡備笅鎿嶄綔锛歱DC->SetMapMode(MM_LOMETRIC);MemDC.SetMapMode(MM_LOMETRIC);鍚庯紝瀵瑰悓涓涓狢Rect杩涜DPtoLP,鎴栬匧PtoDP寰楀埌鐨勭粨鏋滀竴鏍峰悧锛熶粛鐒朵笉涓鏍凤紝涓轰粈涔堟槧灏勬ā寮忕浉鍚屼簡锛屽潗鏍囪浆鎹㈢殑缁撴灉杩樻槸涓嶄竴鏍凤紵

鎴戜滑鏉ュ紕娓呮WINDOWS鐨勬槧灏勬ā寮忓埌搴曟庝箞涓鍥炰簨銆傚浜嶥C鏉ヨ鏈変袱涓尯鍩燂紝涓涓彨鈥滆鍙b(Viewport)锛屼竴涓彨鈥滅獥鍙b(Window,涓庢櫘閫氱殑鏄剧ず鍑虹殑绐楀彛涓嶄竴鏍凤紝鍙槸涓涓蹇)銆備綘鍙互鎶娾滅獥鍙b濇兂璞℃垚涓涓昏緫涓婄殑缁樺浘鍖哄煙锛岃屾墍璋撶殑閫昏緫鍧愭爣绯诲氨鏄熀浜庘滅獥鍙b濈殑銆傚亣璁句互DC鐨(0,0)鐐逛负宸︿笂椤剁偣鐢讳竴涓20脳20鐨勭煩褰紝浣犲氨鍙互鎶婂畠鐞嗚В鎴愬湪鈥滅獥鍙b濅腑鐢荤殑锛屽彲鏄害閲忓崟浣嶆槸浠涔堝憿锛熼偅灏辫鏍规嵁DC鐨勫綋鍓嶆槧灏勬ā寮忔潵瀹氫簡锛屾瘮濡傜幇鍦ㄧ殑妯″紡鏄疢M_LOMETRIC锛岄偅涔堝崟浣嶅氨鏄0.1mm锛屼篃灏辨槸鎴戜滑鍦ㄨ繖涓狣C涓婄敾浜嗕竴涓2mm脳2mm澶у皬鐨勭煩褰€傗滆鍙b濇槸涓涓笌瀹為檯鏄剧ず璁惧绱у瘑鐩歌繛鐨勬蹇碉紝瀹冨搴旂潃瀹為檯鐨勮緭鍑哄尯鍩燂紝璁惧鍧愭爣绯诲氨鏄熀浜庡畠鐨勶紝鑰屽害閲忓崟浣嶅垯姘歌繙鏄薄绱犮侱C鏍规嵁瑙嗗彛鍜岀獥鍙g殑灞炴т骇鐢熶竴绉嶈鍒欎繚璇佹妸涓涓獥鍙f伆濂芥槧灏勪负涓涓鍙c傚緟鎴戜滑鐪熸瑕佹樉绀烘垨鎵撳嵃鍥惧舰鐨勬椂鍊欙紝DC瀹為檯涓婄敤杩欑瑙勫垯鎶奧indow鍧愭爣(閫昏緫鍧愭爣)鏄犲皠涓篤iewport鍧愭爣(璁惧鍧愭爣)杩涜杈撳嚭锛岃嚦浜嶥C浼氭妸2mm鐨勭嚎娈佃浆鎹负澶氬皯璞$礌闀跨殑绾挎锛屾垜浠棤闇鍏冲績锛學INDOWS鑷細鏂欑悊涓鍒囥侰DC鍒嗗埆鎻愪緵GetViewportOrg(),GetWindowOrg()鏉ュ彇寰梀iewport鍜學indow鐨勫師鐐瑰潗鏍(鐩稿浜庝竴涓亣鎯崇殑涓珛鐨勫潗鏍囩郴)锛岃繕鏈塆etViewportExt()锛孏etWindowExt()鏉ュ彇寰梀iewport鍜學indow澶у皬(鍒嗗埆鍩轰簬浠栦滑鍚勮嚜鐨勫害閲忓崟浣)銆傞偅涔圖PtoLP鍜孡PtoDP鍒板簳鍋氫簡浜涗粈涔堝憿锛熷叾瀹炲緢绠鍗曪紝鎷縇PtoDP鏉ヨ灏辨槸鎵ц浜嗚繖鏍蜂竴涓繍绠楋細

xViewport=(xWindow-oxWindow)脳cxViewport/cxWindow+oxViewport

yViewport=(yWindow-oyWindow)脳cyViewport/cyWindow+oyViewport

鑰孌PtoLP鍒欐槸涓婅堪杩愮畻鐨勯嗚繍绠椼傝繕鎷垮垰鎵嶇殑pDC,MemDC鏉ヨ锛屾槧灏勬ā寮忛兘鏄疢M_LOMETRIC,鎵撳嵃璁剧疆涓嶅彉銆傚pDC璋冪敤GetViewportOrg绛夊嚱鏁板緱鍒癡iewport鍘熺偣涓(0,0)锛屽ぇ灏忎负9917脳-14031璞$礌(娌¢敊锛屾槸璐熺殑锛屽洜涓篗M_LOMETRIC涓媦杞存柟鍚戞湞涓)锛學indow鍘熺偣涓(0,0)锛屽ぇ灏忎负2099脳2970(0.1mm)锛涘悓鏍峰緱鍒癕emDC鐨刅iewport鍘熺偣涓(0,0),澶у皬涓1024脳锛768璞$礌锛學indow鍘熺偣涓(0,0),澶у皬涓3200脳2400(0.1mm)銆傝繖灏卞彲浠ヨВ閲妏DC鍜孧emDC鐨勫潗鏍囪浆鎹负浠涔堜笉鍚屼簡銆

鎵撳嵃 | 鏀惰棌姝ら〉 |  鎺ㄨ崘缁欏ソ鍙 | 涓炬姤
涓婁竴绡 涓嬩竴绡
 

璇勫垎锛0

鍙戣〃璇勮
鏌ョ湅鍏ㄩ儴鍥炲銆愬凡鏈0浣嶇綉鍙嬪彂琛ㄤ簡鐪嬫硶銆