亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

使用GDI圖形設(shè)備接口進(jìn)行繪圖

2023-05-14 16:26:28
字體:
供稿:網(wǎng)友

GDI是Windows提供的一套函數(shù)和結(jié)構(gòu),以便于我們調(diào)用它們來繪圖。為什么要提供這樣一個(gè)接口呢?

因?yàn)槲覀冇胁煌妮敵鲈O(shè)備,各種顯示器,各種打印機(jī),他們有不同的打印驅(qū)動(dòng)程序,也就是說,我們要針對(duì)不同的設(shè)備編程,要調(diào)用不同的設(shè)備驅(qū)動(dòng)程序嗎?那么,我的顯示器換了,是不是我們的程序就要更換呢?我們并沒有這樣的麻煩,為什么呢?GDI提供這樣一個(gè)平臺(tái),屏蔽了他們的差異。感覺就像Windows 操作系統(tǒng)屏蔽了硬件,Java虛擬機(jī)屏蔽平臺(tái)一樣。我們使用的GDI全部使用設(shè)備上下文(DC)作為顯示設(shè)備的信息來源。因此,我們無需關(guān)心設(shè)備的特性。

在圖形繪制當(dāng)中,提供了一個(gè)叫做設(shè)備上下文(DC)的結(jié)構(gòu),是一個(gè)GDI提供的接口供我們來訪問設(shè)備,所有的繪圖都是通過設(shè)備上下文來進(jìn)行。因此,同一應(yīng)用程序可以在配有不同的類型顯示器的計(jì)算機(jī)上使用。應(yīng)用程序不需要針對(duì)所有顯示器進(jìn)行更改。

為了后面的畫圖型準(zhǔn)備,我們先添加一個(gè)菜單

五個(gè)菜單的資源ID分別為ID_DRAW_LINE和ID_DRAW_RECT,ID_DRAW_ROUND_RECT和ID_DRAW_CIRCLE和ID_DRAW_CURVE。

添加好菜單,我們還要修改一下工具條,在OnCreateClient中,用下列代碼修改原有的工具條代碼

//工具條創(chuàng)建
        UINTtool[]= {0,ID_DISPLAY_DOWN,ID_DISPLAY_UP,ID_DISPLAY_RIGHT,
        ID_DISPLAY_LEFT,0,ID_DRAW_LINE,ID_DRAW_RECT,
        ID_DRAW_ROUND_RECT,ID_DRAW_CIRCLE,ID_DRAW_CURVE};

//創(chuàng)建擴(kuò)展風(fēng)ge的工具條
        t.CreateEx(this,TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER |       CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

//工具條加載圖片
        t.LoadBitmap(IDB_BITMAP1);
        //設(shè)置按鈕
        t.SetButtons(tool,11);
        //工具條可以??吭谌魏挝恢?br />        t.EnableDocking(CBRS_ALIGN_ANY);
        //框架接受任意??课恢?br />        EnableDocking(CBRS_ALIGN_ANY);
        //執(zhí)行??抗ぞ邨l
        DockControlBar(&t,AFX_IDW_DOCKBAR_TOP);

在前面的基礎(chǔ)之上,我們有添加了五個(gè)工具條按鈕。再在消息映射中添加如下代碼

ON_COMMAND(ID_DRAW_LINE,line)
        ON_COMMAND(ID_DRAW_RECT,rect)
        ON_COMMAND(ID_DRAW_ROUND_RECT,round_rect)
        ON_COMMAND(ID_DRAW_CIRCLE,circle)
        ON_COMMAND(ID_DRAW_CURVE,curve)

我們有消息映射,在添加消息映射處理函數(shù)

void line()
        {
                ::MessageBox(0,"line","消息",MB_OK);
        }
        void rect()
        {
                ::MessageBox(0,"rect","消息",MB_OK);
        }
        void round_rect()
        {
                ::MessageBox(0,"round_rect","消息",MB_OK);
        }
        void circle()
        {
                ::MessageBox(0,"circle","消息",MB_OK);
        }
        void curve()
        {
                ::MessageBox(0,"curve","消息",MB_OK);
        }

這時(shí),準(zhǔn)備工作已做好。開始畫圖之前,我們還要講一個(gè)概念——無效區(qū)域。我們知道,我們的顯示器就是一塊畫布,我們切換窗口,顯示器是不是要重新畫一遍畫布,這個(gè)問題要看情況。因?yàn)楫嬕槐楫嫴迹ㄎ覀円步兄乩L)是很費(fèi)資源的,所以我們就想要重繪一部分區(qū)域,我們?nèi)绾沃酪乩L那部分區(qū)域呢?我們將這個(gè)區(qū)域,設(shè)成要求重繪的矩形區(qū)域之后,重新繪制該區(qū)域。我們把這個(gè)區(qū)域稱為無效區(qū)域。以后我們要重新繪制什么東東的時(shí)候,就可以將它設(shè)成無效區(qū)域。

那么將這個(gè)區(qū)域設(shè)成了無效區(qū)域之后,誰來重新繪制它,如何繪制它呢?那么任何影響窗口的操作都會(huì)引發(fā)WM_PAINT消息,那么,誰來完成消息映射呢?是ON_WM_PAINT(),我們?cè)谙⒂成湟砑舆@一條,這個(gè)消息映射到了一個(gè)函數(shù),這個(gè)函數(shù)是 OnPaint(),也就是說,我們的畫圖工作都在這里面完成。

我們的目標(biāo)先是畫一條線出來,我們可以想象一下,我們先用鼠標(biāo)點(diǎn)一下,就有一個(gè)起始點(diǎn),鼠標(biāo)不放開,拖動(dòng)鼠標(biāo),會(huì)有一條線跟隨,再點(diǎn)一下有了終止點(diǎn),就可以畫一條線了。我們要做的工作就是將上面的內(nèi)容翻譯成VC代碼。

我們要有兩個(gè)點(diǎn),還要一個(gè)重繪區(qū)域;所以我們?cè)兕恠ample中添加成員變量:

CPoint NewPoint;//一個(gè)終止點(diǎn)
        CPoint OldPoint;//一個(gè)起始點(diǎn)
        RECT r;//需要刷新的矩形區(qū)域

鼠標(biāo)點(diǎn)下時(shí),獲得起始點(diǎn)

void OnLButtonDown(UINT i,CPoint p)//添加的消息處理函數(shù)
        {
                OldPoint=p;// 獲得起始點(diǎn)
        }

鼠標(biāo)起來時(shí),得到終止點(diǎn),并繪一條線

void OnLButtonUp(UINT i,CPoint p)
        {
                NewPoint=p;// 獲得終止點(diǎn)
                //由起始點(diǎn)和終止點(diǎn)得到一個(gè)矩形
                r.left=OldPoint.x;
                r.top=OldPoint.y;
                r.right=NewPoint.x;
                r.bottom=NewPoint.y;
                //調(diào)用窗體的設(shè)置無效區(qū)域方法
                CWnd::InvalidateRect(&r,TRUE);
        }

有了無效區(qū)域,我們?cè)賮砝L圖了:

void OnPaint()
        {
                //設(shè)備上下文DC的創(chuàng)建,MFC將DC包裝成了幾個(gè)類,其中有類CPaintDC,
                CPaintDC d(this);
                //將坐標(biāo)移動(dòng)到起始點(diǎn)
                d.MoveTo(OldPoint);
                //繪制一條線
                d.LineTo(NewPoint);
        }

這個(gè)時(shí)候,我們就可以試一下,我們自己做的畫線程序了。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
在线观看91精品国产麻豆| 亚洲亚洲一区二区三区| 欧美www视频| 国产在线视频你懂的| 亚洲国产一区二区三区青草影视| 佐山爱痴汉视频一区二区三区| aa免费在线观看| 国产精品入口麻豆免费| 国产精品美女久久久久av爽| 亚洲乱码中文字幕久久孕妇黑人| 欧美国产97人人爽人人喊| 黄色大秀av大片| 欧美激情三级免费| 久久神马影院| 在线日韩av| 成人一区不卡| 久久久久久国产免费| 久久久久无码国产精品不卡| 两女双腿交缠激烈磨豆腐| 欧美精品乱码| 日韩aaa久久蜜桃av| 麻豆视频一区| 欧美日韩色视频| 国产视频每日更新| 亚洲成人777777| 久久久亚洲欧洲日产| 国产网站无遮挡| 亚洲国产一区在线观看| 精品国产乱码久久久久久果冻传媒| 五月天视频一区| 免费观看成人鲁鲁鲁鲁鲁视频| 国产亚洲精品久久久久久打不开| 五月亚洲婷婷| 久久久www免费人成精品| 国产精品国产一区二区| 18性欧美xxxⅹ性满足| 在线观看视频免费一区二区三区| 国产精品美女久久久免费| 国产成人免费视频| 国产精品久久久久影院| 波多野结衣一区| 日本精品久久久久影院| 国产精品成人播放| 91国内精品白嫩初高生| 亚洲成人精品视频在线观看| 亚洲精品1234| 久久er99精品| 中文字幕va一区二区三区| 少妇极品熟妇人妻无码| 2021最新国产精品一区| 日本www高清视频| 四虎海外影库www4hu| 成人免费xxxxx在线观看| 久久久亚洲天堂| 欧美精品高清| 久久精品国产一区二区三区日韩| 最近2019中文字幕大全第二页| 久久久综合视频| 乳奴隷乳フ辱julia在线观看| 黄色免费在线观看| 成年人视频网站免费| 99久久亚洲精品蜜臀| 久久久久久久av麻豆果冻| 国产欧美久久一区二区三区| 成年女人毛片| 国产男小鲜肉同志免费| 久久久精品一区| 人妻无码中文久久久久专区| 精品视频一区二区三区四区| 国产真实乱子伦| 国产二级一片内射视频播放| 一区二区三区回区在观看免费视频| 中文在线天堂库| 成人xxx免费视频播放| 久久亚洲影视婷婷| 翁止熄痒禁伦短文合集免费视频| 亚洲一级一区| 欧美中文字幕一二三四区| а√中文在线8| 一级特黄视频| 亚洲精品在线免费| 亚洲午夜免费| 最近最好的中文字幕2019免费| 国产婷婷一区二区三区久久| 性生大片免费观看性| 一级欧美一级日韩| 欧美日韩亚洲网| 影音先锋5566资源站| 成年在线观看免费人视频| 美女日韩欧美| 久久综合精品国产一区二区三区| 精品国产伦一区二区三区观看体验| 黄色av网站在线观看| 日本高清一区二区视频| 日韩av网站在线| 1pondo在线播放免费| 无码人妻一区二区三区一| 青娱乐av在线| 一区二区三区国产精华| 欧洲av在线播放| 亚洲国产精品无码久久久| 国产又黄又粗又猛又爽的视频| 欧美激情成人动漫| 欧美一区二区.| 精品国产一区二区三区四区| 999免费视频| 99精品中文字幕| 精品人妻一区二区三区四区| 亚洲一级免费视频| 精品国产乱码一区二区三区四区| 一本久久综合亚洲鲁鲁| 中国美女黄色一级片| 欧美tk丨vk视频| 青青草原成人在线视频| 国产免费av一区二区三区| 国产亚洲免费的视频看| 人人妻人人添人人爽欧美一区| 精品一区二区三区无码视频| 老色鬼久久亚洲一区二区| 久久6免费高清热精品| 欧美日韩mp4| 成人av一区二区三区| 日韩精品电影一区二区| 久久久久国产精品人| 国产一区二区三区日韩精品| 精品视频高潮| 久久久久久久久久97| 影音先锋5566中文源资源| 欧美一级欧美三级| www国产精品内射老熟女| 图片区小说区区亚洲五月| 国产成人精品免费视频大全软件| 亚洲国产精品成人va在线观看| 国产+高潮+白浆+无码| 国产网红女主播精品视频| 亚洲成人a**址| 国产一区二区在线观看免费视频| 亚洲欧美日韩一区二区三区四区| 欧美日韩精品欧美日韩精品| www.久久久精品| 经典三级一区二区三区视频| 亚洲大片一区二区三区| 国产精品美女久久久久av超清| 国产欧美日韩综合一区在线播放| 欧美性淫爽ww久久久久无| 中文字幕一区二区久久人妻网站| 天天操夜夜骑| 成人网在线免费看| aaaa一级片| 91免费福利视频| www在线播放| 男人添女人荫蒂国产| 天天做天天干天天操| 亚洲日本国产| 久久尤物视频| 久草手机在线视频| 91麻豆精品国产91久久久久| chinesemodel无套啪啪| 爽爽窝窝午夜精品一区二区| 人妻一区二区三区| 欧洲高清一区二区| 亚洲成人男人天堂| 欧美亚洲精品在线观看| 大片在线观看网站免费收看| 日本视频网址| 国产精品国产三级国产三级人妇| 国产成人在线网站| 色香蕉成人二区免费| 99亚洲伊人久久精品影院| 欧美日韩在线二区| 日韩精品福利网站| 先锋在线资源一区二区三区| 热re99久久精品国99热蜜月| 中文字幕超清在线免费观看| 91国内精品久久久久| 亚洲视频1区2区| 国产精品户外野外| 欧美精品一区二区三区免费| 福利网址在线| 色综合视频二区偷拍在线| 欧美**字幕| 欧美日韩大片一区二区三区| 欧美一区二区在线观看视频| 91精品xxx在线观看| 污网站在线免费| 日本免费无人高清| 久久久国产精品不卡| 久久久久免费精品| 日产中文字幕在线精品一区| 亚洲不卡一区二区三区| 三上悠亚 电影| jizzjizz16| 岛国在线免费| 国产精品久久久久久久久久久久冷| 99精品电影| 99视频免费观看蜜桃视频| 伊人网在线播放| 日韩在线电影一区| 欧美一卡2卡3卡4卡无卡免费观看水多多| 性欧美精品中出| 欧美极品少妇xxxxⅹ喷水| 久久韩国免费视频| 亚洲欧美日韩在线不卡| 在线免费观看一级片| 亚洲精品男同| 刘亦菲一区二区三区免费看| 欧美二区不卡| 国产精品6699| 欧美一二区视频| 国产欧美一区二区三区另类精品| 国产精品久久亚洲不卡| 国产高潮视频在线观看| 色天天久久综合婷婷女18| 日韩激情精品| 久久精品成人一区二区三区| 日韩精品久久久久| 国产亲近乱来精品视频| 女人天堂亚洲aⅴ在线观看| dy888亚洲精品一区二区三区| 国产精品你懂的在线欣赏| 亚洲成人77777| 国产91色在线|| 国产成人丝袜美腿| 国产日韩精品一区| 中文字幕在线视频免费| 动漫一区二区在线| 国产免费福利| 波多野结衣a v在线| 国产一区国产精品| aaaaa毛片| 久久精品男人天堂av| 国产精品一区二区久久精品爱涩| 免费在线观看成年人视频| 91亚洲国产成人久久精品| www.色播.com| 欧美大片免费观看在线观看网站推荐| 91亚洲永久免费精品| 日韩电影网站| 日韩三级视频中文字幕| 亚洲自拍小视频免费观看| 国产精品久久久久久久免费| 伊人久久国产精品| 国产suv精品一区二区33| 日韩av在线播放观看| 日韩小视频网站| 欧美日韩少妇| 天天做天天躁天天躁| 国产资源在线看| 91精品国产高清久久久久久久久| 日韩免费影院| av免费在线一区| 91蝌蚪在线观看视频| 国内免费精品永久在线视频| jlzzjlzz亚洲女人18| 97婷婷大伊香蕉精品视频| 国产精选第一页| 九一国产在线观看| 欧美连裤袜在线视频| 成+人+亚洲+综合天堂| 日韩精品一区二区三区电影| 国产一区二区三区自拍| 乱人伦视频在线| 亚洲视频777| 99久免费精品视频在线观78| 久久久精品2019中文字幕神马| 97国产精东麻豆人妻电影| 69亚洲乱人伦| 国产精品视频资源| 色美美综合视频| 久久av影视| 成人免费黄色小视频| 亚洲免费高清| 国产精品理论在线观看| 一级视频在线观看视频在线啦啦| 亚洲一区视频| 四虎影院在线免费播放| 日韩伦理av| 国产精品日日摸夜夜爽| 精品乱码一区二区三区四区| av一区二区三| 在线看不卡av| 亚洲AV无码一区二区三区少妇| 欧美一区二区黄片| 成人午夜影院在线观看| 亚洲网站视频福利| 97国产精品久久久| 日本韩国欧美超级黄在线观看| 欧美日韩一区二区区别是什么| 97欧美精品一区二区三区| 精品久久久久久中文字幕一区奶水| 中文字幕乱码日本亚洲一区二区| 亚洲2区在线| 亚洲xxxx2d动漫1| 国模视频一区| 日韩在线观看一区| 欧美网色网址| 肉色超薄丝袜脚交69xx图片| 中文字幕1区2区| 国产视频一区二区三区四区| 欧美xxxxxxxxx| 九色精品视频在线观看| 无遮挡动作视频在线观看免费入口| 青青青免费在线视频| 激情图片qvod| 九九免费精品视频在线观看| 正在播放亚洲一区| 国内精品在线观看视频| 深田咏美中文字幕| 日本在线不卡视频一二三区| 涩涩涩久久久成人精品| 一本本久综合久久爱| 国产第一页第二页| www.黄色小说.com| 黄网站app在线观看下载视频大全官网| 成人三级视频在线播放| 激情久久免费视频| 色老太综合网| 国语精品中文字幕| 亚洲国产精品麻豆| 久久久久黄色| 成年免费网站| 亚洲欧美日本精品| 亚洲欧洲性图库| 国产精品综合色区在线观看| 国产区在线视频| 在线播放日韩导航| 91久久久久久久| 国产乱肥老妇国产一区二|