亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? zywview.cpp

?? 提供直線的三種算法;提供圓的算法;提供畫任意圓弧的算法
?? CPP
字號:
// zywView.cpp : implementation of the CZywView class
//

#include "stdafx.h"
#include "zyw.h"

#include "zywDoc.h"
#include "zywView.h"
#include "math.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CZywView

IMPLEMENT_DYNCREATE(CZywView, CView)

BEGIN_MESSAGE_MAP(CZywView, CView)
	//{{AFX_MSG_MAP(CZywView)
	ON_COMMAND(ID_DDALINE, OnDdaline)
	ON_COMMAND(ID_BRESENHAMLINE, OnBresenhamline)
	ON_COMMAND(ID_MIDPOINTLINE, OnMidpointline)
	ON_WM_SIZE()
	ON_COMMAND(ID_CIRCLEB, OnCircleb)
	ON_COMMAND(ID_CIRCLEANY, OnCircleany)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CZywView construction/destruction

CZywView::CZywView()
{
	// TODO: add construction code here

}

CZywView::~CZywView()
{
}

BOOL CZywView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CZywView drawing

void CZywView::OnDraw(CDC* pDC)
{
	CZywDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	char sizeStr[64];
	int i;
	CString str;

	sprintf(sizeStr, "(%d,%d)", m_winSizeX, m_winSizeY);
    pDC->TextOut(m_winSizeX/2, m_winSizeY/2, sizeStr);

	pDC->MoveTo(m_winSizeX/2, 0);
	pDC->LineTo(m_winSizeX/2, m_winSizeY);
	pDC->MoveTo(0, m_winSizeY/2);
	pDC->LineTo(m_winSizeX, m_winSizeY/2);
   // m_disPlay=-1;
	switch(m_disPlay)
	{
	case 0:
		begin = GetTickCount();
		for(i=0;i<100;i++)
//		sleep();
		DDAline(0, 0, 140,  50, pDC);
		DDAline(0, 0,  50, 140, pDC);
		DDAline(0, 0, -140,  50, pDC);
		DDAline(0, 0,  -50, 140, pDC);
		DDAline(0, 0, 140,  -50, pDC);
		DDAline(0, 0,  50, -140, pDC);
		DDAline(0, 0, -140,  -50, pDC);
		DDAline(0, 0,  -50, -140, pDC);	
		end = GetTickCount();
		timeUse1 = end - begin;
		str.Format("Time: % d ms",timeUse1);
		AfxMessageBox(str);
		break;
	case 1:
		begin = GetTickCount();
		for(i=0;i<100;i++)
		Bline(0, 0, 140,  50, pDC);
		Bline(0, 0,  50, 140, pDC);
		Bline(0, 0, -140,  50, pDC);
		Bline(0, 0,  -50, 140, pDC);
		Bline(0, 0, 140,  -50, pDC);
		Bline(0, 0,  50, -140, pDC);
		Bline(0, 0, -140,  -50, pDC);
		Bline(0, 0,  -50, -140, pDC);
		end = GetTickCount();
		timeUse2 = end - begin;
		str.Format("Time: % d ms",timeUse2);
		AfxMessageBox(str);
		break;
	case 2:
		begin = GetTickCount();
		for(i=0;i<100;i++)
		MidPointline(0, 0, 140,  50, pDC);
		MidPointline(0, 0, -140,  50, pDC);
		MidPointline(0, 0, 140,  -50, pDC);
		MidPointline(0, 0, -140,  -50, pDC);
  		MidPointline(0, 0, 50,  140, pDC);
		MidPointline(0, 0, 50,  -140, pDC);
		MidPointline(0, 0, -50,  140, pDC);
		MidPointline(0, 0, -50,  -140, pDC);
		end = GetTickCount();
		timeUse3 = end - begin;
		str.Format("Time: % d ms",timeUse3);
		AfxMessageBox(str);
		break;
	case 3:
		BresenhamCircle(100,pDC);
		break;
	case 4:
		BresenhamCircleAny(60,60,90,pDC);
		BresenhamCircleAny(80,80,120,pDC);
		BresenhamCircleAny(100,100,150,pDC);
		BresenhamCircleAny(120,120,180,pDC);
		BresenhamCircleAny(140,140,210,pDC);
		BresenhamCircleAny(160,160,240,pDC);
 		BresenhamCircleAny(180,180,270,pDC);
		BresenhamCircleAny(200,200,300,pDC);
		BresenhamCircleAny(220,220,330,pDC);
		break;
	default:
		break;
	}
   
}

/////////////////////////////////////////////////////////////////////////////
// CZywView printing

BOOL CZywView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CZywView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CZywView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CZywView diagnostics

#ifdef _DEBUG
void CZywView::AssertValid() const
{
	CView::AssertValid();
}

void CZywView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CZywDoc* CZywView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CZywDoc)));
	return (CZywDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CZywView message handlers

void CZywView::DDAline(int x1, int y1, int x2, int y2, CDC* pDC)
{
   int i,steps;
   float x,y,dx,dy;
   CString str;

   steps = abs(x2-x1) > abs(y2-y1) ? abs(x2-x1) : abs(y2-y1);
   dx = (float)(x2-x1) / steps;
   dy = (float)(y2-y1) / steps;
   x = x1 + 0.5;
   y = y1 + 0.5;
   for (i = 0; i <= steps; i++) {
       pDC->SetPixel(m_winSizeX/2+x, m_winSizeY/2-y, 500);
	   x += dx;    y += dy;
   }
   
}

void CZywView::Bline(int x1, int y1, int x2, int y2, CDC* pDC)
{
	int i,t1,t2,interchange;
	float x,y,dx,dy,f,temp;

	x = x1;
	y = y1;
	dx = abs(x2 - x1);
	dy = abs(y2 - y1);

	if(x2-x1>=0) t1 = 1;
	else t1 = -1;
	if(y2-y1>=0) t2 = 1;
	else t2=-1;
	if(dy>dx){
		temp = dx;
		dx = dy;
		dy = temp;
		interchange = 1;
	}
	else interchange = 0;

	f=2*dy - dx;
	
	for(i=1;i<=dx;i++){
		if(f>=0){
			if(interchange==1) x += t1;
			else y += t2;
			f = f - 2*dx;
		}
		else{
			if(interchange==1) y += t2;
			else x += t1;
			f = f + 2*dy;
		}
		pDC->SetPixel(m_winSizeX/2+x, m_winSizeY/2-y,50);

	}
}


/*void CZywView::MidPointline(int x1, int y1, int x2, int y2, CDC* pDC)
{
	if(abs(x1-x2) <= 1 && abs(y1-y2) <= 1)	return;
	else pDC->SetPixel(m_winSizeX/2 + (x1+x2)/2 + 0.5, m_winSizeY/2 - (y1+y2)/2 - 0.5,100);
	MidPointline(x1,y1,(x1+x2) / 2 + 0.5,(y1+y2) / 2 + 0.5,pDC);
	MidPointline((x1+x2) / 2 + 0.5,(y1+y2) / 2 + 0.5,x2,y2,pDC);
}*/


void CZywView::MidPointline(int x1, int y1, int x2, int y2, CDC* pDC)
{
	int x = (x1+x2)/2,y = (y1+y2)/2;
	
	pDC->SetPixel(m_winSizeX/2+x, m_winSizeY/2-y,200);
	
	if(abs(x1-x2) > 1 || abs(y1-y2) > 1){
	   MidPointline(x1,y1,x,y,pDC);
	   MidPointline(x,y,x2,y2,pDC);
	}
}

void CZywView::BresenhamCircle(int r,CDC *pDC)
{
	int x,y,delta,d1,d2,direction;
	x = 0;   y = r;
    delta = 2 * (1-r);
	while(y>=0){
		pDC->SetPixel(m_winSizeX/2+x, m_winSizeY/2-y,200);
		pDC->SetPixel(m_winSizeX/2+x, m_winSizeY/2+y,200);
		pDC->SetPixel(m_winSizeX/2-x, m_winSizeY/2-y,200);
		pDC->SetPixel(m_winSizeX/2-x, m_winSizeY/2+y,200);
		if(delta<0){
			d1=2*(delta+y)-1;
			if(d1 <= 0)
				direction = 1;
			else
				direction = 2;
		}
		else if(delta>0){
			d2 = 2*(delta-x)-1;
			if(d2 <= 0)
				direction = 2;
			else
				direction = 3;
		}
		else
			direction = 2;
		switch(direction)
		{
		case 1:
			x++;
			delta += 2*x+1;
			break;
		case 2:
			x++;
			y--;
			delta += 2*(x-y+1);
			break;
		case 3:
			y--;
			delta += (-2*y+1);
			break;
		}
	}
}

void CZywView::quadrant(int x,int y,int *flag)
{
	if(x>0 && y>0)
	{flag[0] = 1; flag[1] = 1;}
	else if(x>0 && y<0)
	{flag[0] = -1; flag[1] = 1;}
	else if(x<0 && y<0)
	{flag[0] = 1; flag[1] = -1;}
	else if(x<0 && y>0)
	{flag[0] = -1; flag[1] = -1;}
}

void CZywView::BresenhamCircleAny(int r,int R,int Q,CDC *pDC)
{
	int x,y,delta,d1,d2,direction;

	x = r*sin((R*PI)/180);    y = r*cos((R*PI)/180);

	quadrant(x,y,s);
	delta = (x+s[0]*s[1])*(x+s[0]*s[1])+(y-s[1])*(y-s[1])-r*r;

//	while(x != r*sin((Q*PI)/180) || y != r*cos((Q*PI)/180) )
	for(int i=0;i<r*sqrt(2)*Q/90;i++)
	{
		pDC->SetPixel(m_winSizeX/2+x, m_winSizeY/2-y,200);
	    quadrant(x,y,s);
        if(s[0]*delta < 0){
			d1 = 2*s[0]*(delta+s[1]*y)-s[0];
			if(d1 <= 0)
				direction = 1;
			else
				direction = 2;
		}
		else if(s[0]*delta > 0){
			d2 = 2*s[0]*(delta-s[0]*s[1]*x)-s[0];
			if(d2 <= 0)
				direction = 2;
			else
				direction = 3;
		}
		else
			direction = 2;
		switch(direction)
		{
		case 1:
			x += s[0]*s[1];
			delta += (2*s[0]*s[1]*x+1);
			break;
		case 2:
			x += s[0]*s[1];
			y -= s[1];
			delta += (2*s[0]*s[1]*x-2*s[1]*y+2);
			break;
		case 3:
			y -= s[1];
			delta -= (2*s[1]*y+1);
			break;
		}
	}
}

void CZywView::OnDdaline() 
{
	// TODO: Add your command handler code here
	CZywDoc* pDoc = GetDocument();
	
	m_disPlay = 0;

	pDoc->UpdateAllViews(NULL);	
}

void CZywView::OnBresenhamline() 
{
	// TODO: Add your command handler code here
	CZywDoc* pDoc = GetDocument();
	
	m_disPlay = 1;

	pDoc->UpdateAllViews(NULL);
}

void CZywView::OnMidpointline() 
{
	// TODO: Add your command handler code here
	CZywDoc* pDoc = GetDocument();
	
	m_disPlay = 2;

	pDoc->UpdateAllViews(NULL);
}

void CZywView::OnSize(UINT nType, int cx, int cy) 
{
	CView::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here
	m_winSizeX = cx;
	m_winSizeY = cy;
}

void CZywView::OnCircleb() 
{
	// TODO: Add your command handler code here
	CZywDoc* pDoc = GetDocument();
	
	m_disPlay = 3;

	pDoc->UpdateAllViews(NULL);

}

void CZywView::OnCircleany() 
{
	// TODO: Add your command handler code here
	CZywDoc* pDoc = GetDocument();
	
	m_disPlay = 4;

	pDoc->UpdateAllViews(NULL);

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩激情在线观看| 久久精品一区蜜桃臀影院| 国产精品福利电影一区二区三区四区| 久88久久88久久久| 欧美成人精品福利| 国产精品资源在线观看| 欧美激情一区二区三区不卡| 成人激情动漫在线观看| 亚洲欧美日韩国产另类专区| 在线一区二区三区四区| 丝袜国产日韩另类美女| 欧美成人国产一区二区| 国产福利91精品一区二区三区| 国产精品色噜噜| 91福利视频久久久久| 日本特黄久久久高潮| 精品国产免费一区二区三区香蕉| 国产99久久久国产精品免费看 | 国产精品毛片a∨一区二区三区| 岛国精品在线播放| 亚洲自拍偷拍网站| 欧美刺激午夜性久久久久久久 | 成人精品免费网站| 亚洲一区二区三区在线看| 欧美一级久久久久久久大片| 国产成人在线观看| 亚洲综合一区二区三区| 亚洲精品在线免费观看视频| 懂色av一区二区夜夜嗨| 视频一区在线视频| 国产农村妇女精品| 欧美人妇做爰xxxⅹ性高电影| 国内精品嫩模私拍在线| 亚洲老司机在线| 精品成人免费观看| 欧美性受xxxx| 成人性生交大合| 日本大胆欧美人术艺术动态| 亚洲同性gay激情无套| 精品人在线二区三区| 日本丰满少妇一区二区三区| 狠狠久久亚洲欧美| 亚洲午夜av在线| 亚洲欧洲日韩av| 久久综合色播五月| 欧美一区二区视频在线观看| 99国产精品99久久久久久| 久久精品国产秦先生| 亚洲最色的网站| 国产精品亲子伦对白| 欧美成人aa大片| 欧美色图在线观看| 91网站最新地址| 国产99精品国产| 免费欧美日韩国产三级电影| 一区二区三区.www| 136国产福利精品导航| 国产欧美日韩不卡| 精品捆绑美女sm三区| 欧美剧在线免费观看网站| 色综合天天综合色综合av| 成人污视频在线观看| 黄页网站大全一区二区| 奇米精品一区二区三区在线观看 | 在线观看一区二区精品视频| 成人动漫精品一区二区| 国产激情91久久精品导航| 精品一区二区三区的国产在线播放| 亚洲国产综合色| 一区二区三区成人在线视频| 一色桃子久久精品亚洲| 中文字幕亚洲区| 国产精品久久久久久久岛一牛影视 | 欧美乱熟臀69xxxxxx| 91久久精品一区二区二区| 99精品久久只有精品| 不卡的av电影| 97久久超碰国产精品| av欧美精品.com| 91亚洲永久精品| 日本高清无吗v一区| 色8久久精品久久久久久蜜| 91国偷自产一区二区开放时间| k8久久久一区二区三区 | 色先锋资源久久综合| 色综合久久99| 欧美私模裸体表演在线观看| 欧美伊人精品成人久久综合97| 色婷婷激情综合| 欧美乱熟臀69xxxxxx| 日韩视频一区在线观看| 久久蜜桃香蕉精品一区二区三区| 久久久亚洲国产美女国产盗摄| 国产欧美日韩精品一区| 中文字幕综合网| 亚洲午夜私人影院| 看片网站欧美日韩| 成人午夜精品一区二区三区| 色综合久久中文字幕| 欧美日韩国产小视频在线观看| 日韩一级片网站| 欧美极品xxx| 亚洲国产美女搞黄色| 蜜臀久久久久久久| 成人激情综合网站| 在线亚洲欧美专区二区| 欧美一级搡bbbb搡bbbb| 欧美国产亚洲另类动漫| 亚洲综合丝袜美腿| 久久99精品久久久久久国产越南 | 中文字幕中文字幕一区二区| 一区二区三区免费| 久草中文综合在线| 91麻豆国产香蕉久久精品| 欧美久久久久久蜜桃| 国产人伦精品一区二区| 亚洲综合色网站| 国产一区二区三区免费播放| 99这里只有久久精品视频| 91精品国产麻豆| 国产精品国产自产拍高清av王其| 亚洲国产精品久久久男人的天堂 | 欧美片在线播放| 久久久国产精华| 香蕉成人伊视频在线观看| 国产精品一品视频| 欧美亚洲动漫制服丝袜| 国产偷国产偷精品高清尤物 | 午夜av一区二区| 成人性生交大片免费看视频在线| 欧美电影在线免费观看| 国产精品乱码妇女bbbb| 免费的国产精品| 欧美私模裸体表演在线观看| 国产日产精品一区| 久久精品999| 欧美日韩在线三区| 综合分类小说区另类春色亚洲小说欧美| 琪琪一区二区三区| 91福利国产成人精品照片| 欧美国产欧美亚州国产日韩mv天天看完整 | 亚洲精品视频自拍| 国产盗摄精品一区二区三区在线| 欧美精品日韩精品| 亚洲欧美韩国综合色| 成人午夜精品一区二区三区| 日韩美女主播在线视频一区二区三区| 一区二区三区不卡视频在线观看 | 国产精品乱子久久久久| 久久99国产精品成人| 欧美日韩一区国产| 一区二区欧美精品| 91亚洲国产成人精品一区二三| 久久久久久免费毛片精品| 美女在线观看视频一区二区| 欧美色网站导航| 亚洲国产视频直播| 在线免费观看日本欧美| 一区二区三区四区高清精品免费观看| 成人国产精品免费观看视频| 国产喂奶挤奶一区二区三区| 激情六月婷婷久久| 精品国产乱码久久久久久老虎| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美精品1区2区3区| 日韩在线卡一卡二| 欧美一区二区三区日韩视频| 日本aⅴ亚洲精品中文乱码| 欧美人与z0zoxxxx视频| 日产精品久久久久久久性色| 欧美日韩综合不卡| 亚洲h动漫在线| 欧美一区二区三区啪啪| 欧美bbbbb| 久久亚洲综合色| 成人毛片视频在线观看| 亚洲三级理论片| 色噜噜狠狠一区二区三区果冻| 亚洲另类在线制服丝袜| 欧美性受xxxx黑人xyx| 日日欢夜夜爽一区| 欧美成人性福生活免费看| 国产乱人伦精品一区二区在线观看 | 亚洲电影中文字幕在线观看| 欧美日韩三级视频| 久久精品国产99国产| 国产午夜精品在线观看| av在线不卡电影| 亚洲精品视频在线观看免费| 欧美三级日韩三级| 老司机一区二区| 欧美激情在线一区二区三区| av一区二区不卡| 天堂午夜影视日韩欧美一区二区| 欧美一区二区三区四区视频| 国产成人午夜片在线观看高清观看| 国产精品网曝门| 欧美日韩国产系列| 国产福利电影一区二区三区| 亚洲免费观看视频|