![资料详解第4章和_第1页](http://file4.renrendoc.com/view/a2b75a96fc280d9a29fff8a19c9b5c59/a2b75a96fc280d9a29fff8a19c9b5c591.gif)
![资料详解第4章和_第2页](http://file4.renrendoc.com/view/a2b75a96fc280d9a29fff8a19c9b5c59/a2b75a96fc280d9a29fff8a19c9b5c592.gif)
![资料详解第4章和_第3页](http://file4.renrendoc.com/view/a2b75a96fc280d9a29fff8a19c9b5c59/a2b75a96fc280d9a29fff8a19c9b5c593.gif)
![资料详解第4章和_第4页](http://file4.renrendoc.com/view/a2b75a96fc280d9a29fff8a19c9b5c59/a2b75a96fc280d9a29fff8a19c9b5c594.gif)
![资料详解第4章和_第5页](http://file4.renrendoc.com/view/a2b75a96fc280d9a29fff8a19c9b5c59/a2b75a96fc280d9a29fff8a19c9b5c595.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.1TheMFCDeviceContext4.1.1DrawingLinesand4.1.3TheMap4.2GDI4.2.2StockGDI4.3Drawing4.3.1Text4.3.2TheMFCDeviceContextWhenaWindowsprogramdrawstoascreen,aprinter,oranyotheroutputdevice,itdoesn'toutputpixelsdirectlytothedevice.Instead,itdrawstoalogical"disysurface"representedbyadevicecontext(DC).TheMFCDeviceContextAdevicecontextisadatastructuredeepinsideWindowsthatcontainsfieldsdescribingeverythingtheGDIneedstoknowaboutthedisysurface,ludingthephysicaldevicewithwhichitisassociatedandassortedstateinformation.TheMFCDeviceContextBeforeitdrawsanythingonthescreen,aWindowsprogramacquiresadevicecontexthandlefromtheItthenpassesthathandlebacktotheGDIeachtimeitcallsaGDIoutputfunction.TheMFCDeviceContextDevicecontextsyahugeroleinmakingtheGDIdevice-tbecause,givenahandletoadevicecontext,thesameGDIfunctionscanbeusedtodrawtoadiverseassortmentofoutputdevices.TheMFCDeviceContextWhenyouprogramWindowswithMFC,thedevicecontexthasevengreatersignificance.Inadditiontoservingasthekeythatunlocksthedoortooutputdevices,adevicecontextobjectencapsulatestheGDIfunctionsthatprogramsusetogenerateoutput.TheMFCDeviceContextInMFC,youdon'tgrabahandletoadevicecontextandcallGDIoutputfunctions,atleastnotdirectly;instead,youcreateadevicecontextobjectandcallitsmemberfunctionstodoyourTheMFCDeviceContextMFC'sCDCclasswrapsaWindowsdevicecontextandtheGDIfunctionsthatrequireadevicecontexthandleintooneconvenientpackage,andCDC-derivedclassessuchasCPaintDCand DCrepresentthedifferenttypesofdevicecontextsthatWindowsapplicationsuse.TheMFCDeviceContextOnewaytogetadevicecontextinanMFCapplicationistocallCWnd::GetDC,whichreturnsapointertoaCDCobjectrepresentingaWindowsdevicecontext.AdevicecontextpoincquiredwithCWnd::GetDCshouldbereleasedwithCWnd::ReleaseDCwhendrawingiscompleted.ThefollowingcodegetsaCDCpointerfromGetDC,doessomedrawing,andcallsReleaseDCtoreleasethedevicecontext:CDC*pDC=GetDC//DosomedrawingReleaseDC(pDC);TheMFCDeviceContextCDC*GetDC();ReturnIdentifiesthedevicecontextfortheareaifsuccessful;otherwise,thereturnvalueisNULL.Thepointermaybetemporaryandshouldnotbestoredforlateruse.TheMFCDeviceContextintReleaseDC(CDC*pDCReturnNonzeroifsuccessful;otherwisepDC:IdentifiesthedevicecontexttobeReleasesadevicecontext, ingitforusebyotherapplications.TheeffectoftheReleaseDCmemberfunctiondependsonthedevice-contextTheMFCDeviceContextIfthesamecodeweretoappearinanOnPainthandler,youwoulduseCWnd::BeginPaintandCWnd::EndPaintinceofGetDCandReleaseDCtoensureproperhandlingoftheWM_PAINTmessage:CDC*pDC=BeginPaint//DosomeEndPaintTheMFCDeviceContextReturnIdentifiesthedevicecontextforCWnd.ThepointermaybetemporaryandshouldnotbestoredbeyondthescopeofEndPaint.lpPaint:PointstothePAINTSTRUCTstructurethatistoreceivepaintinginformation.PreparesCWndforpaintingandfillsaPAINTSTRUCTdatawithinformationabouttheTheMFCDeviceContextvoidEndPaint(LPPAINTSTRUCTlpPaintlpPaint:PointstoaPAINTSTRUCTstructurethatcontainsthepaintinginformationretrievedbytheBeginPaintmemberfunction.Marksofpaintinginthegivenwindow.PaintmemberfunctionisrequiredforeachcalltotheBeginPaintmemberfunction,butonlyafterpaintingiscomplete.IfthecaretwashiddenbytheBeginPaintmemberfunction,EndPaintrestoresthecarettothescreen.4.1TheMFCDeviceContextCC4.1TheMFCDeviceContextSpecial-PurposeDeviceContextClassFordrawinginawindow's area(OnPainthandlersonly) Fordrawinginawindow's area(anywherebutOnPaint)Fordrawinganywhereinawindow, ludingthe FordrawingtoaGDI4.1TheMFCDeviceContextTheC DCclassisderivedfromCDCandtakescareofcallingtheWindowsfunctionsGetDCatconstructiontimeandReleaseDCatdestructionAwindow'sareaexcludestheborder,thecaptionbar,andthebar.IfyoucreateaCDCobject,youhaveadevicecontextthatismappedonlytothisarea—youcan'tdrawoutsideit.Thepoint(0,0)usuallyreferstotheupper-leftcornerofthearea.4.1TheMFCDeviceContextTheCWindowDCclassisderivedfromCDC.ItcallstheWindowsfunctionsGetWindowDCatconstructiontimeandReleaseDCatdestructionIfyouconstructanobjectofclassCWindowDC,thepoint(0,0)isattheupper-leftcornerofthe areaoftheWiththiswhole-windowdevicecontext,youcandrawinthewindow'sborder,inthecaptionarea,andso4.1TheMFCDeviceContextTheCPaintDCclassisadevice-contextclassderivedfromCDC.ItperformsaCWnd::BeginPaintatconstructiontimeandCWnd::EndPaintatdestructiontime.MFC'sCPaintDCclassletsyoupaintinawindow'sareainresponsetoWM_PAINTmessages.YoushoulduseitonlyinOnPainthandlersandneveranywhereelse.4.1TheMFCDeviceContextCDC*pDC=GetDC();CDC*pDC=Createafullscreendevice-contextCDC*pDC=4.1TheMFCDeviceContextvirtualintSaveDC();ReturnAnintegeridentifyingthesaveddevicecontext.Itis0ifanerroroccurs.ThisreturnvaluecanbeusedtorestorethedevicecontextbycallingSavesthecurrentstateofthedevicecontextbycopyingstateinformation(suchasclipregion,selectedobjects,andmapmode)toacontextstackmaintainedbyWindows.ThesaveddevicecontextcanlaterberestoredbyusingRestoreDC.4.1TheMFCDeviceContextvirtualBOOLRestoreDC(intnSavedDCReturnNonzeroifthespecifiedcontextwasrestored;otherwisenSavedDC:Specifiesthedevicecontexttoberestored.ItcanbeavaluereturnedbyapreviousSaveDCfunctioncall.IfnSavedDCis1,themostrecentlysaveddevicecontextisrestored.RestoresthedevicecontexttothepreviousstateidentifiedbynSavedDC.RestoreDCrestoresthedevicecontextbypopstateinformationoffastackcreatedbyearliercallstotheSaveDCmember4.1TheMFCDeviceContexttypedefstruct{LONGLONG}CPoint::CPoint(intinitX,intinitY);CPoint::CPoint(POINTinitP);4.1TheMFCDeviceContexttypedefstruct{intx;intCSize::CSize(intinitCX,intinitCY);CSize::CSize(SIZEinitSize);4.1TheMFCDeviceContexttypedefstruct{LONGleft;//x-coordinateoftheupper-leftcorneroftherectangleLONGtop;//y-coordinateoftheupper-leftcorneroftherectangleLONGright;//x-coordinateofthelower-rightcorneroftherectangleLONGbottom;//y-coordinateofthelower-rightcorneroftherectangleCRect::CRect(intl,intt,intr,intb);CRect::CRect(constRECT&srcRect);CRect::CRect(LPCRECTlpSrcRect);CRect::CRect(POINTpoint,SIZEsize);CRect::CRect(POINTtopLeft,POINTSomeCDCFunctionsforDrawingLinesandSetsthecurrentpositioninpreparationfor Drawsalinefromthecurrentpositiontoapositionandmovesthecurrentpositionto theline.Connectsasetofpointswithline Connectsasetofpointswithlinesegmentsbeginningwiththecurrentpositionandmovesthecurrentpositionto ofthepolyline.DrawsanDrawsanarcandmovesthecurrentpositiontoendoftheCPointMoveTo(intx,inty);CPointMoveTo(POINTpoint);ReturnThex-andy-coordinatesofthepreviouspositionasaCPointx:Specifiesthelogicalx-coordinateofthenewposition.y:Specifiesthelogicaly-coordinateofthenewpoint:Specifiesthenewposition.YoucanpasseitheraPOINTstructureoraCPointobjectforthisparameter.Movesthecurrentpositiontothepointspecifiedbyxandy(orbyExample1:for(int{CPoint} BOOLL o(intx,inty);BOOLL o(POINTpoint);ReturnNonzeroifthelineisdrawn;otherwisex:Specifiesthelogicalx-coordinateof pointfortheline.y:Specifiesthelogicaly-coordinateof pointfortheline.point:Specifies pointfortheline.YoucanpasseitheraPOINTstructureoraCPointobjectforthisparameter.Drawsalinefromthecurrentpositionupto,butnot luding,thepointspecifiedbyxandy(orpoint).Thelineisdrawnwiththeselectedpen.Thecurrentpositionissettox,yortoExample2:L CPenpen;pen.CreatePen(PS_SOLID,2,RGB(255,0,0))CPen*pOldPen=pDC- opDC->MoveTo oBOOLPolyline(LPPOINTlpPoints,intnCountReturnNonzeroifthefunctionissuccessful;otherwiselpPoints:PointstoanarrayofPOINTstructuresorCPointobjectstobenCount:Specifiesthenumberofpointsinthearray.Thisvaluemustbeatleast2.DrawsasetoflinesegmentsconnectingthepointsspecifiedbyExample3:CPenCPen*pOldPen=pDC-CPointp[5]={CPoint(50,50),CPoint(100,50),CPoint(100,100),pDC->Polyline(p,5Example4: CPenCPen*pOldPen=pDC-pDC->MoveTo(0,0CPointp[5]={CPoint(50,50),CPoint(300,50),CPoint(300,300), o(p,5BOOLArc(intx1,inty1,intx2,inty2,intx3,inty3,intx4,inty4BOOLArc(LPCRECTlpRect,POINTptStart,POINTptEndlpRect:Specifiestheboundingrectangle(inlogicalunits).YoucanpasseitheranLPRECToraCRectobjectforthisparameter.ptStart:Specifiesthex-andy-coordinatesofthepointthatdefinesthearcsstartingpoint(inlogicalunits).Thispointdoesnothavetolieexactlyonthearc.YoucanpasseitheraPOINTstructureoraCPointobjectforthisptEnd:Specifiesthex-andy-coordinatesofthepointthatdefinesthearcsendingpoint(inlogicalunits).Thispointdoesnothavetolieexactlyonthearc.YoucanpasseitheraPOINTstructureoraCPointobjectforthisparameter.Example5:CPenCPen*pOldPen=pDC-CPointp[5]={CPoint(50,50),CPoint(300,50),CPoint(300,300),pDC->Polyline(p,5CDCFunctionsforDrawingClosedDrawsaclosedfigureboundedbytheintersectionofanellipseandalineDrawsacircleoranDrawsapie-shapedConnectsasetofpointstoformaDrawsarectanglewithsquareDrawsarectanglewithroundedBOOLRectangle(intx1,inty1,intx2,inty2);BOOLRectangle(LPCRECTlpRect);x1:Specifiesthex-coordinateoftheupper-leftcorneroftherectangle(inlogicalunits).y1:Specifiesthey-coordinateoftheupper-leftcorneroftherectangle(inlogicalunits).x2:Specifiesthex-coordinateofthelower-rightcorneroftherectangle(inlogicalunits).y2:Specifiesthey-coordinateofthelower-rightcorneroftherectangle(inlogicalunits).lpRect:Specifiestherectangleinlogicalunits.YoucanpasseitheraCRectobjectorapointertoaRECTstructureforthisDrawsarectangleusingthecurrentpen.Theinterioroftherectangleisfilledusingthecurrentbrush.CBrushbs;CBrush*pOldBrush=pDC-CRectBOOLEllipse(intx1,inty1,intx2,inty2);BOOLEllipse(LPCRECTlpRect);x1:Specifiesthelogicalx-coordinateoftheupper-leftcorneroftheellipsesboundingrectangle.y1:Specifiesthelogicaly-coordinateoftheupper-leftcorneroftheellipsesboundingrectangle.x2:Specifiesthelogicalx-coordinateofthelower-rightcorneroftheellipsesboundingrectangle.y2:Specifiesthelogicaly-coordinateofthelower-rightcorneroftheellipsesboundingrectangle.lpRect:Specifiestheellipsesboundingrectangle.Youc sopassaCRectobjectforthisparameter.Example7:CBrushbs;CBrush*pOldBrush=pDC-CRectrect(0,0,100,100);//CRectBOOLPolygon(LPPOINTlpPoints,intnCountlpPoints:Pointstoanarrayofpointsthatspecifiestheverticesofthepolygon.EachpointinthearrayisaPOINTstructureoraCPointnCount:SpecifiesthenumberofverticesintheDrawsapolygonconsistingoftwoormorepoints(vertices)connectedbylines,usingthecurrentpen.Thesystemclosesthepolygonautomatically,ifnecessary,bydrawingalinefromthelastvertextothefirst.Example8:CPenCPen*pOldPen=pDC-CPointpoly[4];themapmodeistheattributeofthedevicecontextthat ernshowlogicalcoordinatesaretranslatedintodevicecoordinates.LogicalcoordinatesarethecoordinatesyoupasstoCDCoutputfunctions.Devicecoordinatesarethecorrespondingpixelpositionswithinawindow.MapLogicalAxes1x:right,0.1x:right,y:0.01x:right,y:0.01x:right,y:0.001x:right,y:1/1440in.(0.0007x:right,y:dc.Rectangle(0,0,200,100);drawsa200-pixelby100-pixelrectangleintheMM_TEXTmapmode.ThesamestatementproducesnooutputintheMM_LOENGLISHmapmodebecausepositiveycoordinateslieoutsidethevisiblepartofthewindow.TheMM_ISOTROPICandmapmodesdifferfromtheothermapmodesinoneimportantrespect:It'syou,notWindows,whodetermineshowlogicalcoordinatesareconvertedintodevicecoordinates.ThemostcommonusefortheMM_ISOTROPICandMM_ANISOTROPICmapmodesisfordrawingoutputthatautomaticallyscalestomatchthewindowsize.CRect AWindowsGDIobjecttypeisrepresentedbyanMFClibraryclass.CGdiObjectisthe classfortheGDIobjectclasses.AWindowsGDIobjectisrepresentedbyaC++objectofaclassderivedfromCGdiObject.Here'salistoftheGDIderivedclasses:CBitmap—Abitmapisanarrayofbitsinwhichoneormorebitscorrespondtoeachdisypixel.Youcanusebitmapstorepresentimages,andyoucanusethemtocreatebrushes.CBrush—Abrushdefinesabitmappedpatternofpixelsthatisusedtofillareaswithcolor.CFont—Afontisacompletecollectionofcharactersofaparticulartypefaceandaparticularsize.Fontsaregenerallystoredondiskasresources,andsomeareCPalette—Apaletteisacolormapinterfacethatallowsanapplicationtotakefulladvantageofthecolorcapabilityofanoutputdevicewithoutinterferingwithotherapplications.CPen—Apenisatoolfordrawinglinesandshapeborders.Youcanspecifyapen'scolorandthicknessandwhetheritdrawssolid,dotted,ordashedlines.CRgn—Aregionisanareawhoseshapeisapolygon,anellipse,oracombinationofpolygonsandellipses.Youcanuseregionsforfilling,clip,andmousehit-YouneverconstructanobjectofclassCGdiObject;instead,youconstructobjectsofthederivedclasses.ConstructorsforsomeGDIderivedclasses,suchasCPenandCBrush,allowyoutospecifyenoughinformationtocreatetheobjectinonestep.Others,suchasCFontandCRgn,requireasecondcreationstep.Fortheseclasses,youconstructtheC++objectwiththedefaultconstructorandthenyoucallacreatefunctionsuchastheCreateFontorCreatePolygonRgnfunction.Pens,brushes,andotherobjectscreatedfromCGdiObject-derivedclassesareresourcesthatconsumespaceinmemory,soit'simportanttodeletethemwhenyounolongerneedIfyoucreateaCPen,CBrush,CFont,orotherCGdiObjectonthestack,theassociatedGDIobjectisautomaticallydeletedwhenCGdiObjectgoesoutofscope.IfyoucreateaCGdiObjectontheheapwithnew,besuretodeleteitatsomepointsothatitsdestructorwillbecalled.TheGDIobje sociatedwithaCGdiObjectcanbeexplicitlydeletedbycallingCGdiObject::DeleteObject.Youneverneedtodeletestockobjects,eveniftheyare"created"withIt'simportanttodeletetheGDIobjectsyoucreate,butit'sequallyimportanttoneverdeleteaGDIobjectwhileit'sselectedintoadevicecontext.Codethatattemptstopaintwithadeletedobjectisbuggycode.Theonlyreasonitdoesn'tcrashisthattheWindowsGDIissprinkledwitherror-checkingcodetopreventsuchcrashesfrom{CPennewPen(PS_DASHDOTDOT,2,(COLORREF)0);//black//2pixelsCPen*pOldPen=pDC- o(110, //newPenis}//newPenautomaticallydestroyedonCPen:TheCPenclassencapsulatesaWindowsgraphicsdeviceinterface(GDI)pen.CPen(intnPenStyle,intnWidth,COLORREFcrColor);nPenStyle:Specifiesthepenstyle.nWidth:Specifiesthewidthofthepen.crColor:ContainsanRGBcolorfortheTheparameternPenStylecanbeanyoneofthefollowing Createsasolid Createsadashedpen.Validonlywhenpenwidthis1orless,indevice Createsadottedpen.Validonlywhenpenwidthis1orless,indevice Createsapenwithalternatingdashesanddots.Validonlwhenthepenwidthis1orless,indeviceunits. Createsapenwithalternatingdashesanddoubledots.Validonlywhenthepenwidthis1orless,indevice CreatesanullBOOLCreatePen(intnPenStyle,intnWidth,COLORREFcrColor);nPenStyle:Specifiesthepenstyle.nWidth:Specifiesthewidthofthepen.crColor:ContainsanRGBcolorfortheCBrush:TheCBrushclassencapsulatesthefunctionalityofaWindowsgraphicsdeviceinterface(GDI)brush,whichisabitmapthatisusedtofilltheinteriorofclosedshapes.CBrush(COLORREFcrColorCBrush(intnIndex,COLORREFcrColorCBrush(CBitmap*pBitmapcrColor:SpecifiestheforegroundcolorofthebrushasanRGBcolor.Ifthebrushishatched,thisparameterspecifiesthecolorofthenIndex:SpecifiesthehatchstyleofthepBitmap:PointstoaCBitmapobjectthatspecifiesabitmapwithwhichthebrushpaints.TheparameternIndexcanbeanyoneofthefollowing Downwardhatch(lefttoright)at45degree Horizontalandverticalcrosshatch Crosshatchat45degrees Upwardhatch(lefttoright)at45degrees Horizontalhatch VerticalCBrushbrush;CBitmapbit;CBrush*poldbrush=pDC->SelectObject(&brush);CommonlyUsedStockPenthatdrawsBlackpenthatdrawssolidlines1pixelWhitepenthatdrawssolidlines1pixelBrushthatdrawsBrushthatdrawsnothing(sameasBlackDarkgrayMediumgrayWhiteFixed-pitchANSIVariable-pitchsystemWindowscontainsanumberofstockGDIobjectsthatyoucanuse.BecausetheseobjectsarepartofWindows,youdon'thavetoworryaboutdeletingthem.(Windowsignoresrequeststodeletestockobjects.)TheMFClibraryfunctionCDC::SelectStockObjectselectsastockobjectintothedevicecontextandreturnsapointertothepreviouslyselectedobject,whichitStockobjectsarehandywhenyouwanttodeselectyourownnonstockGDIobjectpriortoitsdestruction.Youcanuseastockobje ternativetothe"old"objectyouused.CGdiObject*pOld=pDC->SelectStockObject(DKGRAY_BRUSH);4.3DrawingCommonlyUsedCDCTextDrawstextinaformattingOutputsalineoftextatthecurrentorspecifiedComputesthewidthofastringinthecurrentReturnsfontmetrics(characterheight,averagecharacterwidth,andsoon)forthecurrentfontSetsalignmentparametersforTextOutandotheroutputfunctionsSpecifiestheaddedwidththatisneededtojustifyastringoftextSetsthedevicecontext'stextoutputSetsthedevicecontext'sbackgroundCDC::virtualBOOLTextOut(intx,inty,LPCTSTRlpszString,intnCount);BOOLTextOut(intx,inty,constCString&str);x:Specifiesthelogicalx-coordinateofthestartingpointofthetext.y:Specifiesthelogicaly-coordinateofthestartingpointofthetext.lpszString:Pointstothecharacterstringtobedrawn.nCount:Specifiesthenumberofbytesinthestr:ACStringobjectthatcontainsthecharacterstobeWritesacharacterstringatthespecifiedlocationusingthecurrentlyselectedfont.CDC::virtualCSizeTabbedTextOut(intx,inty,LPCTSTRintnCount, LPINTlpnTabStopPositions,in abOrigin);CSizeTabbedTextOut(intx,inty,constCString&str,in LPINTlpnTabStopPositions, abOriginnTabPositions:Specifiesthenumberofvaluesinthearrayoftab-stoppositions.lpnTabStopPositions:Pointstoanarraycontainingthetab-stoppositions(inlogicalunits).Thetabstopsmustbesortedin reasingorder;thesmallestx-valueshouldbethefirstiteminthearray.nTabOrigin:Specifiesthex-coordinateofthestartingpositionfromwhichtabsareexpanded(inlogicalunits).Callthismemberfunctiontowriteacharacterstringatthespecifiedlocation,expandintabstothevaluesspecifiedinthearrayoftab-stoppositions.virtualintDrawText(LPCTSTRlpszString,intnCount,LPRECTUINTnFormatintDrawText(constCString&str,LPRECTlpRect,UINTnFormatlpszString:Pointstothestringtobedrawn.SpecifiesthenumberofcharsinthelpRect:PointstoaRECTstructureorCRectobjectthatcontainstherectangle(inlogicalcoordinates)inwhichthetextistobeformatted.str:ACStringobjectthatcontainsthespecifiedcharacterstobedrawn.nFormat:Specifiesthemethodofformattingthetext.CallthismemberfunctiontoformattextinthegivenTheParameternFormatcanbeanycombinationofthefollowingExample:DrawText&CRectpDC->DrawText("单行文本居中rc,DT_CENTER|DT_VCENTERinab=40;pDC->TabbedTextOut(rc.left,rc.top,"绘制\tTab\t文本\t示例1,&nTab,pDC->TabbedTextOut(rc.left,rc.top+20,"绘制\tTab\t文本\t示例1,&nTab,pDC->TabbedTextOut(rc.left,rc.top+40,"绘制\tTab\t文本\t示例0,UINTSetTextAlign(UINTnFlagsThenFlagsvalueisoneormoreofthefollowingvalues:CDC::GetTextAlignUINTGetTextAlign()const;Thereturnvalueisoneormoreofthefollowingvalues:AllCDCtextfunctionsusethefontthatiscurrentlyselectedintothedevicecontext.Afontisagroupofcharactersofaparticularsize(height)andtypefacethatsharecommonattributessuchascharacterweight—forexample,normalorboldface.FontsareanintegralpartoftheWindowsGDI.ThismeansthatfontsbehavethesamewayotherGDIobjectsdo.Theycanbescaledandclipped,andtheycanbeselectedintoadevicecontextasapenorabrushcanbeselected.AllGDIrulesaboutdeselectionanddeletionapplytofonts.GetTextMetricsletyouretrieveinformationaboutthefontthatiscurrentlyselectedintothedeviceGetTextMetricsfillsaTEXTMETRICstructurewithinformationonthecharactersthatmakeuptheFivefontheightmeasurementparamet
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 业主与开发商修路合同
- 杉木买卖协议合同书
- 物业服务管理合同范本
- 楼房外墙清洗合同
- 2025工地施工班组劳动合同
- 学术培训劳务合同
- 2025房产购销合同模板
- 2025通信预埋、安装施工合同
- 房屋买卖合同书模板
- 广告代理合同的范文
- 学校财务年终工作总结4
- 2024-2025学年人教版七年级数学上册期末达标测试卷(含答案)
- 2024年安全员-C证考试题库及答案(1000题)
- 中医中风病(脑梗死)诊疗方案
- GMP-基础知识培训
- 人教版小学六年级数学下册(全册)教案
- 人教版二年级语文上册同音字归类
- 高二数学下学期教学计划
- 文学类作品阅读练习-2023年中考语文考前专项练习(浙江绍兴)(含解析)
- 第五章硅酸盐分析
- 外科学总论-第十四章肿瘤
评论
0/150
提交评论