1. 程式人生 > >MFC繪製橢圓的兩種簡單方法

MFC繪製橢圓的兩種簡單方法

方法一:

// CDrawTest1View 繪製

void CDrawTest1View::OnDraw(CDC* pDC)
{
	CDrawTest1Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;

	// TODO: 在此處為本機資料新增繪製程式碼
	//修改CView類的虛擬函式OnDraw繪製橢圓

	CRect rect;
	this->GetClientRect(rect);
	pDC->Ellipse(rect);
}

類CRect是對Windows結構RECT的封裝,凡是能用RECT結構的地方都可以用CRect代替。

結構RECT表示一個矩形的位置和尺寸,其定義為:

 typedef struct tagRECT{

 LONG left;

 LONG top;

LONG right;

LONG bottom;

} RECT;

其中 left、top分別表示矩形左上角頂點的橫座標和縱座標,right、bottom分別表示矩形右下角頂點的橫座標和縱座標。由於CRect提供了一些成員函式和過載運算子,使得CRect的操作更加方便。 1.CRect的建構函式 CRect有如下6個建構函式:

CRect( );

CRect( int l, int t, int r, int b );

 CRect( const RECT& srcRect );

 CRect( LPCRECT lpSrcRect );

CRect( POINT point, SIZE size );

 CRect( POINT topLeft, POINT bottomRight );

說明:分別以不同的方式構造CRect物件,引數l,t,r,b分別指定矩形的左邊、上邊、右邊和底邊。SrcRect是一個RECT結構的引用。LpSrcRect是一個指向RECT結構的指標。Point指定矩形的左上角頂點的座標,size指定矩形的長度和寬度。topLeft指定矩形的左上角頂點的座標,bottomRight指定矩形的右下角頂點的座標。

方法二:
// CDrawTest1View 訊息處理程式

void CDrawTest1View::OnPaint()
{
	CPaintDC dc(this); // device context for painting
	// TODO: 在此處新增訊息處理程式程式碼
	// 不為繪圖訊息呼叫 CView::OnPaint()

	//從屬性裡面的事件選項來新增OnPaint()事件
	//在本事件中繪圖
	OnPrepareDC(&dc);
	OnDraw(&dc);
         CRect rect;
	this->GetClientRect(rect);
	dc.Ellipse(rect);
}
OnPrepareDC函式功能: 在OnDraw成員函式呼叫前被框架函式呼叫用於螢幕顯示。或者在OnPrint 成員函式呼叫前被調用於列印預覽
       專門用於設定螢幕對映、調整的OnDraw的前置函式(也即是在OnDraw前呼叫)
函式原型:virtual void OnPrepareDC( CDC* pDC,CPrintInfo* pInfo = NULL ); 引數解釋: pDC :指向一個用於繪製圖像檔案的上下文裝置。 plnfo:如果OnPrepareDC正被列印或列印預覽呼叫,則指向一個CPrintInfo結構,該結構描述了當前列印作業。m_nCurPage成員指定了將要列印的頁面。如果OnPrepareDC正在用於螢幕顯示,在該引數為NULL 返回值:無 標頭檔案:afxwin.h

相關推薦

MFC繪製橢圓簡單方法

方法一: // CDrawTest1View 繪製 void CDrawTest1View::OnDraw(CDC* pDC) { CDrawTest1Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc

Python寫9*9乘法表的簡單方法

第一種:使用for遍歷迴圈巢狀 第二種:使用for遍歷巢狀while迴圈 兩種方法的輸出結果為: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=

MFC獲取視窗可視狀態的API方法

嚴以律己,寬以待人. 三思而後行. GMail/GTalk: yanglinbo#google.com; MSN/Email: tx7do#yahoo.com.cn; QQ: 3 0 3 3 9 6 9 2 0 .

簡單的方式快速實現hashCode 和 equals方法

我們在寫domain model類, 有時候需要重寫hashCode和equals,以便可以把這個類當成List或者Map的Key來用。     有兩種方法可以很方便地去幫我們實現: 1. 使用eclipse工具。右擊程式碼->Source->Genera

C語言複製檔案的簡單方法【從根本解決問題】

網上的方法大致有這樣幾種: 1、使用作業系統提供的複製檔案的API 2、使用C語言本身提供的複製檔案的函式 3、直接讀寫檔案,從檔案角度來操作,從而直接將一個檔案複製 這裡我們使用的就是這第三種。 複製檔案的思路大概是這樣的,如果是文字型別,則可直接使用字元讀寫的方式,

Git的使用--如何將本地專案上傳到Github(簡單、方便的方法

將本地專案上傳到Github(兩種簡單、方便的方法) 一、第一種方法: 首先你需要一個github賬號,所有還沒有的話先去註冊吧! https://github.com/ 我們使用git需要先安裝git工具,這裡給出下載地址,下載後一路直

JSP 簡單入門教學(2): 點選按鈕實現數相加加法運算的 實現方法

我們要實現頁面效果:瞭解過html的都知道,提交資料用的是form表單,表單中的內容是被髮送出去的內容。大部分開發都是這樣的,先畫ui後考慮功能,所以我們先用程式碼表示出這個介面:<form ac

線程的睡眠方法&ANR(進程/服務無響應)

時間 運行 睡眠 tro 執行 方法 如果 服務 一段 1 method1: try { 2 Thread.sleep(3000); 3 } catch (InterruptedException e) { 4

android縮放動畫的實現方法

get odi omx rac tor Coding eight rpo odin 在android開發。我們會常常使用到縮放動畫,普通情況下縮放動畫有兩種實現方式。一種是直接通過java代碼去實現,第二種是通過配置文件實現動畫,以下是兩種動畫的基本是用法: Ja

簡單實現菜單高亮顯示的JS類(轉載)

on() pos 菜單高亮 href 不同的 index body -m ear 兩種簡單實現菜單高亮顯示的JS類 近期在寫一個博客管理後臺的前端,涉及在同一頁面兩種高亮顯示當前菜單的需求.記得當年寫靜態頁時,為了實現高亮都是在每個頁面加不同的樣式,呵.高亮

mysql遠程連接失敗的解決方法

mysql password upd leg .cn 權限 連接 每次 ddr ---恢復內容開始--- (這是轉載別人的,因為我覺得很有用,每次都是參考這個的第二種方法解決的,不管你聽不聽得到,先說聲謝謝!也記下來方便大家看看) mysql解決遠程不能訪問的二種方法,需要

【漏洞預警】CVE-2017-8464 震網三代漏洞復現(利用方法

art cal mage http test ip地址 get for oot 早在6月13日,微軟發布補丁修復編號為CVE-2017-8464的漏洞,本地用戶或遠程攻擊者可以利用該漏洞生成特制的快捷方式,並通過可移動設備或者遠程共享的方式導致遠程代碼執行,追溯到以前,NS

PPP的配置方法(pap和chap)

pap chapPAP的配置R1上的配置[R1]int s4/0/0[R1-Serial4/0/0]ppp authentication-mode pap[R1-Serial4/0/0]q[R1]aaa[R1-aaa]local-user huawei password cipher 123456Info:

js實現菲波那切數列的常用方法

res alert 定義 面向 div ret 如果 clas cti 菲波那切數列即:1 1 2 3 5 8......,後面的數字是前面兩個數字的和,並且第一個,第二個數字都是1,用js實現 的兩種方法,一種通過常用的遞歸調用,第二種不通過遞歸,而是通過強大的閉包實現。

0923關於安裝mysql簡單方式

csdn list conn utf-8 啟動 sdn lib ria onf http://blog.csdn.net/liumm0000/article/details/18841197 方式一:利用RPM安裝包進行安裝 RPM方式安裝MySQL5.6 RPM方式安裝M

BZOJ 2101 [Usaco2010 Dec]Treasure Chest 藏寶箱:區間dp 博弈【表示方法】【壓維】

space print 而且 problem 所有 php 一條直線 題解 bzoj 題目鏈接:http://www.lydsy.com/JudgeOnline/problem.php?id=2101 題意:   共有n枚金幣,第i枚金幣的價值是w[i]。   把金幣排成一

MySQL數據庫root賬戶密碼忘記處理方法(保有效)

mysql mysq 密碼忘記 方法1:1.停止MySQL服務# kill `cat /var/run/mysqld/mysqld.pid`或者# pkill mysqld2.創建一個密碼賦值語句的文本文件# vi mysql-init ALTER USER ‘root‘@‘localhost‘

Struts2中validate數據校驗的常用方法

red 有一種 資源文件 業務 相同 dna erp wrong 顯示 本文主要介紹Struts2中validate數據校驗的兩種方法及Struts2常用校驗器. 1.Action中的validate()方法 Struts2提供了一個Validateable接口,這個接口

方法重寫方法的比較

直接 方法調用 可訪問性 err 方法 圖解 span 類型 ase 虛方法virtual..override: 1.派生類的方法和基類的方法有相同的簽名和返回類型。 2.基類的方法使用virtual標註。 3.派生類的方法使用override標註。 class MyBa

php生成excel的另一簡單方法

.com com span 來看 nbsp pan blog table content 之前我用table的方式寫過excel,還用php-excel這個類庫寫過excel。今天,我再向大家推薦一個超級簡單的寫excel的方法。 代碼: $xstr = "問題id\t問