• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 29,comments - 10,trackbacks - 0
             

            MFCDC(設(shè)備描述環(huán)境)和一些GDI函數(shù)填充裝到一起,形成了一個DCD.

            CDC
            類中的一些常用的成員函數(shù)
            函數(shù) 說明
            Arc()
            畫橢圓弧
            BitBlt()
            把一個DC中的位圖自制到另一個DC
            Ellipse()
            畫橢圓
            FillRect()
            用指定的畫刷填充矩形
            LineTo()
            畫直線
            MoveTo()
            移動畫筆
            Rectangle()
            畫矩形
            RoundRect()
            畫圓角矩形
            SelectObject()
            選擇GDI的繪圖對象
            SetTextColor()
            設(shè)置文本顏色
            StretchBlt()
            把一個DC中的位圖自制到另一個DC中但可以改變位圖的長寬比
            TextOut()
            繪制字符串

            一、幾種派生的CDC
            類名 說明
                  CClientDC
            在相應(yīng)除WM_PAINT消息之外的消息處理函數(shù)中提供窗口客戶區(qū)的設(shè)備描述環(huán)境

            void CAaaView::OnLButtonDown(UINT nFlags, CPoint point) 
            {
                
            // TODO: Add your message handler code here and/or call default
                CClientDC dc(this);
                RECT rc 
            = {50,50,250,150};
                dc.Ellipse(
            &rc);
                CView::OnLButtonDown(nFlags, point);
            }

                  CMetaFileDC 代表Windows圖元文件的設(shè)備描述環(huán)境,在創(chuàng)建與設(shè)備無關(guān)的并且可以回放的圖像時使用這個類型的DC
                  CPaintDC
            OnDraw() 函數(shù)中使用的窗口用戶區(qū)的設(shè)備描述環(huán)境,MFC中用OnDraw()函數(shù)來處理WM_PAINT消息。和WM_PAINT消息關(guān)聯(lián),當(dāng)某一窗口需要繪圖時,這個消息就發(fā)給這個窗口,它在窗口的OnPaint成員函數(shù)中使用,其構(gòu)造函數(shù)自動調(diào)用BeginPaint,而析構(gòu)函數(shù)自動調(diào)用EndPaint。這些都有Windows自動完成。我們要做的就是在CPaintDC對象上畫圖。

            void CAaaView::OnPaint() 
            {    
                CPaintDC dc(
            this);     //  創(chuàng)建一個對象
                RECT rc = {50,50,150,150};    //  設(shè)定坐標(biāo)
                dc.Rectangle(&rc);    //  繪制矩形
            }

                  CWindowDC 提供在整個窗口內(nèi)(不只是用戶區(qū))繪圖的設(shè)備描述環(huán)境 .

             void CAaaView::OnLButtonUp(UINT nFlags, CPoint point) 
            {
                
            // TODO: Add your message handler code here and/or call default
                CWindowDC dc(this);
                RECT rc 
            = {50,50,250,150};
                dc.Ellipse(
            &rc);
                CView::OnLButtonUp(nFlags, point);
            }

            二、字體描述
            1、TEXTMETRIC
            void CCFontInfoView::OnDraw(CDC* pDC)
            {
                CCFontInfoDoc
            * pDoc = GetDocument();
                ASSERT_VALID(pDoc);
                
            // TODO: add draw code for native data here
                TEXTMETRIC tm;
                CString strFontInfo;
                pDC
            ->GetTextMetrics(&tm);
                strFontInfo.Format(
            "以下是當(dāng)前字體的基本信息!");
                pDC
            ->TextOut(1010, strFontInfo);
                strFontInfo.Format(
            "tmHeight = %d",tm.tmHeight);
                pDC
            ->TextOut(1030, strFontInfo);
            }

            2、LOGFONT
            void CCFontInfoView::OnMyCreateFont() 
            {
                
            // TODO: Add your command handler code here
                
            //CCFontInfoDoc* pDoc = GetDocument();
                
            //ASSERT_VALID(pDoc);

                CDC
            * pDC = this->GetDC();
                CString strLogFont;
                LOGFONT lFont 
            = {20,    //字符單元或字符的邏輯高度
                                 20,        // 字符單元或字符的邏輯寬度
                                 10,        // 走格矢量與設(shè)備的X軸之間的夾角
                                 10,        // 每個字符的基線與設(shè)備的X軸之間的夾角
                                 555,    // 字體的灰度
                                 1,        // 為斜體字體
                                 1,        // 帶下畫線的字體
                                 1,        // 帶刪除線的字體
                                 10,        // 字體的符集
                                 10,        // 字體的輸出精度
                                 10,        // 字體的裁減精度
                                 10,        // 字體的輸出質(zhì)量
                                 10,        // 字體的間距和系列
                                 ""}
            ;    // 字體的字樣名
                CFont m_Font;
                m_Font.CreateFontIndirect(
            &lFont);
                CFont
            * pOldFont = pDC->SelectObject(&m_Font);
                strLogFont 
            = "第三章  多媒體文本處理";
                pDC
            ->TextOut(10,300,strLogFont);
            }

            三、創(chuàng)建各種字體:

            1HFONT CreateFontIndirect(CONST LOGFONT *lplf)

            lplf:指向定義此邏輯字體特性的LOGFONT結(jié)構(gòu)的指針。

            返回值:如果函數(shù)調(diào)用成功,返回值是邏輯字體的句柄;如果函數(shù)調(diào)用失敗,返回值是NULL

            例子看LOGFONT例子部分

            2HFONT CreateFont(int nHeight, int nWidth, int nEscapement, int nOrientation, int fnWeight, DWORD fdwltalic, DWORD fdwUnderline, DWORD fdwStrikeOut, DWORD fdwCharSet, DWORD fdwOutputPrecision, DWORD fdwClipPrecision, DWORD fdwQuality, DWORD fdwPitchAndFamily, LPCTSTR lpszFace)

             參數(shù)說明:http://baike.baidu.com/view/1080748.htm

            void CCFontInfoView::On310() 
            {
                
            // TODO: Add your command handler code here
                CDC* pDC = this->GetDC();

                CFont m_Font;
                m_Font.CreateFont(
            30,0,10,10,1, FALSE, TRUE, FALSE, ANSI_CHARSET,
                                OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, 
                PROOF_QUALITY,DEFAULT_PITCH 
            + FF_DONTCARE, "Arial");
                CFont
            * pOldFont = pDC->SelectObject(&m_Font);
                pDC
            ->TextOut(10,350,"第三章  多媒體文本處理");
            }

            3CFont::CreatePointFont

            BOOL CreatePointFont(int nPointSize, LPCTSTR lpszFaceName, CDC* pDC = NULL);

            返回值:如果成功,則返回非零值,否則為0

            參數(shù):

            nPointSize

            所需字體高度(用0.1點(diǎn)表示,例如,傳遞120表示12點(diǎn)字體)。

            lpszFaceName

            一個CString或指向一個以空終止符結(jié)尾的字符串,定義字體名稱。此字符串長度不應(yīng)超過30個字符。Windows EnumFontFamilies函數(shù)可用于計算當(dāng)前可用字體的總數(shù)。如果為NULL,則GDI使用與設(shè)備無關(guān)的字體。

            pDC

            指向CDC對象,將nPointSize中的高度轉(zhuǎn)化為邏輯單位。如果為NULL,則屏幕設(shè)備上下文用于轉(zhuǎn)換。


            說明:
            此函數(shù)提供了一種創(chuàng)建指定字體和點(diǎn)大小的字體對象的方法,它自動將nPointSize中的高度轉(zhuǎn)化為邏輯單位,這是使用由pDC指向的CDC對象實(shí)現(xiàn)的。
            當(dāng)完成用CreatePointFont函數(shù)創(chuàng)建CFont對象后,從設(shè)備上下文中選擇字體,然后刪除CFont對象。

            void CCFontInfoView::On311() 
            {
                
            // TODO: Add your command handler code here
                CDC* pDC = this->GetDC();

                CFont m_Font;
                m_Font.CreatePointFont(
            320"Arial", pDC);
                CFont
            * pOldFont = pDC->SelectObject(&m_Font);
                pDC
            ->TextOut(10,250,"第三章  多媒體文本處理");

            }

            4CFont::CreatePointFontIndirect

            BOOL CreatePointFontIndirect(const LOGFONT* lpLogFont, CDC* pDC = NULL);

            返回值:如果成功,則返回非零值,否則為0

            參數(shù):

            lpLogFont

            指向LOGFONT結(jié)構(gòu),定義邏輯字體特征。LOGFONTlfHeight成員用0.1點(diǎn)計算而不用邏輯單位(如果設(shè)置lfHeight120,則要求12點(diǎn)字體)。

            pDC

            指向CDC對象,用于將lfHeight中的高度轉(zhuǎn)化為邏輯單位。如果為NULL,屏幕設(shè)備上下文用于轉(zhuǎn)換。


            說明:
            此函數(shù)與CreateFontIndirect相似,但LOGFONTlfHeight成員由0.1點(diǎn)表示而不是用設(shè)備單位表示。在傳遞LOGFONT結(jié)構(gòu)到Windows之前,pDC指向的CDC對象自動使函數(shù)的lfHeight中的高度轉(zhuǎn)化為邏輯單位。
            當(dāng)完成由CreatePointFontIndirect函數(shù)創(chuàng)建的CFont對象之后,先選擇設(shè)備上下文字體,然后刪去CFont對象。

            void CCFontInfoView::On312() 
            {
                
            // TODO: Add your command handler code here
                CDC* pDC = this->GetDC();

                LOGFONT lf;
                memset(
            &lf, 0sizeof(LOGFONT));  // 清空LOGFONT 結(jié)構(gòu)
                lf.lfHeight = 200;    // 設(shè)置 LOGFONT 結(jié)構(gòu)
                lf.lfWeight = 700;  
                strcpy(lf.lfFaceName, 
            "Arial");
                CFont font;
                font.CreatePointFontIndirect(
            &lf, pDC);   
                
                CFont
            * pOldFont = pDC->SelectObject(&font);
                pDC
            ->TextOut(460,260,"第三章  多媒體文本處理");

            }

            四、文本控件的使用
            1、靜態(tài)文本控件
            void CStaticTextDlg::OnButton() 
            {
                
            // TODO: Add your control notification handler code here
                m_strStaticText = "再見!";  // 設(shè)置要顯示的內(nèi)容
                UpdateData(FALSE);    // 在靜態(tài)文本框中顯示結(jié)果

            }
            2使用編輯框控件
            void CStaticTextDlg::OnButton2() 
            {
                
            // TODO: Add your control notification handler code here
                UpdateData(TRUE);   // 接受輸入的信息
                m_strDisplay = m_strReceive;     //  賦值
                UpdateData(FALSE);   // 輸出得到的信息

            }
            posted on 2009-06-21 13:19 The_Moment 閱讀(929) 評論(0)  編輯 收藏 引用 所屬分類: VC理論
            久久久久久久亚洲Av无码| 久久久久久曰本AV免费免费| 色综合久久中文色婷婷| 青青热久久综合网伊人| 久久国产成人精品国产成人亚洲| 亚洲国产精品无码久久久久久曰| 久久伊人五月丁香狠狠色| 亚洲国产精品久久| 久久综合亚洲色HEZYO社区| 国产精品久久久久久久午夜片| 2021国内精品久久久久久影院| 婷婷综合久久中文字幕| 亚洲人成伊人成综合网久久久| 久久精品?ⅴ无码中文字幕| 亚洲AV日韩AV永久无码久久| 久久久91人妻无码精品蜜桃HD | 91麻豆精品国产91久久久久久 | 日韩美女18网站久久精品| 久久久久亚洲av无码专区| 伊人久久大香线蕉成人| 精品99久久aaa一级毛片| 国产精品久久亚洲不卡动漫| 亚洲AV无码久久精品蜜桃| 亚洲精品成人久久久| 久久久久亚洲精品中文字幕| 久久精品国产69国产精品亚洲| 97精品伊人久久久大香线蕉| 日韩AV毛片精品久久久| 久久99精品国产麻豆不卡| 99久久精品免费| 久久亚洲国产欧洲精品一| 97久久精品无码一区二区天美| 老色鬼久久亚洲AV综合| 国产成人久久精品一区二区三区| 久久精品国产精品亚洲下载 | 久久福利青草精品资源站| 精品久久久久久无码专区不卡 | 亚洲国产精品无码久久久不卡 | 久久久久亚洲精品中文字幕| 久久综合久久鬼色| 久久精品成人欧美大片|