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

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

?? roundbutton.cpp

?? 利用VC++開發(fā)環(huán)境
?? CPP
字號:
//   RoundButton.cpp文件   

/////////////////////////////////////////////////////////////////////////////   

#include   "stdafx.h"   
#include   "math.h"   
#include   "RoundButton.h"   

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

//   prototypes   
COLORREF   GetColour(double   dAngle,   COLORREF   crBright,   COLORREF   crDark);   
void   DrawCircle(CDC*   pDC,   CPoint   p,   LONG   lRadius,   COLORREF   crColour,   BOOL   bDashed   =   FALSE);   
void   DrawCircle(CDC*   pDC,   CPoint   p,   LONG   lRadius,   COLORREF   crBright,   COLORREF   crDark);   


//   Calculate   colour   for   a   point   at   the   given   angle   by   performing   a   linear   
//   interpolation   between   the   colours   crBright   and   crDark   based   on   the   cosine   
//   of   the   angle   between   the   light   source   and   the   point.   
//   
//   Angles   are   measured   from   the   +ve   x-axis   (i.e.   (1,0)   =   0   degrees,   (0,1)   =   90   degrees   )   
//   But   remember:   +y   points   down!   

COLORREF   GetColour(double   dAngle,   COLORREF   crBright,   COLORREF   crDark)   
{   
#define   Rad2Deg 180.0/3.1415     
#define   LIGHT_SOURCE_ANGLE -2.356 //   -2.356   radians   =   -135   degrees,   i.e.   From   top   left   
    
	ASSERT(dAngle   >   -3.1416   &&   dAngle   <   3.1416);   
	double   dAngleDifference   =   LIGHT_SOURCE_ANGLE   -   dAngle;   
    
	if   (dAngleDifference   <   -3.1415)   dAngleDifference   =   6.293   +   dAngleDifference;   
	else   if   (dAngleDifference   >   3.1415)   dAngleDifference   =   6.293   -   dAngleDifference;   
    
	double   Weight   =   0.5*(cos(dAngleDifference)+1.0);   
    
	BYTE   Red       =   (BYTE)   (Weight*GetRValue(crBright)   +   (1.0-Weight)*GetRValue(crDark));   
	BYTE   Green   =   (BYTE)   (Weight*GetGValue(crBright)   +   (1.0-Weight)*GetGValue(crDark));   
	BYTE   Blue     =   (BYTE)   (Weight*GetBValue(crBright)   +   (1.0-Weight)*GetBValue(crDark));   
    
	//TRACE("LightAngle   =   %0.0f,   Angle   =   %3.0f,   Diff   =   %3.0f,   Weight   =   %0.2f,   RGB   %3d,%3d,%3d\n",     
	//     LIGHT_SOURCE_ANGLE*Rad2Deg,   dAngle*Rad2Deg,   dAngleDifference*Rad2Deg,   Weight,Red,Green,Blue);   
    
	return   RGB(Red,   Green,   Blue);   
}   

void   DrawCircle(CDC*   pDC,   CPoint   p,   LONG   lRadius,   COLORREF   crColour,   BOOL   bDashed)   
{   
	const   int   nDashLength   =   1;   
	LONG   lError,   lXoffset,   lYoffset;   
	int     nDash   =   0;   
	BOOL   bDashOn   =   TRUE;   
    
	//Check   to   see   that   the   coordinates   are   valid   
	ASSERT(   (p.x   +   lRadius   <=   LONG_MAX)   &&   (p.y   +   lRadius   <=   LONG_MAX)   );   
	ASSERT(   (p.x   -   lRadius   >=   LONG_MIN)   &&   (p.y   -   lRadius   >=   LONG_MIN)   );   
    
	//Set   starting   values   
	lXoffset   =   lRadius;   
	lYoffset   =   0;   
	lError       =   -lRadius;   
    
	do   {   
		if   (bDashOn)   {   
			pDC->SetPixelV(p.x   +   lXoffset,   p.y   +   lYoffset,   crColour);   
			pDC->SetPixelV(p.x   +   lXoffset,   p.y   -   lYoffset,   crColour);   
			pDC->SetPixelV(p.x   +   lYoffset,   p.y   +   lXoffset,   crColour);   
			pDC->SetPixelV(p.x   +   lYoffset,   p.y   -   lXoffset,   crColour);   
			pDC->SetPixelV(p.x   -   lYoffset,   p.y   +   lXoffset,   crColour);   
			pDC->SetPixelV(p.x   -   lYoffset,   p.y   -   lXoffset,   crColour);   
			pDC->SetPixelV(p.x   -   lXoffset,   p.y   +   lYoffset,   crColour);   
			pDC->SetPixelV(p.x   -   lXoffset,   p.y   -   lYoffset,   crColour);   
		}   
		
		//Advance   the   error   term   and   the   constant   X   axis   step   
		lError   +=   lYoffset++;   
		
		//Check   to   see   if   error   term   has   overflowed   
		if   ((lError   +=   lYoffset)   >=   0)   
			lError   -=   --lXoffset   *   2;   
		
		if   (bDashed   &&   (++nDash   ==   nDashLength))   {   
			nDash   =   0;   
			bDashOn   =   !bDashOn;   
		}   
		
	}   while   (lYoffset   <=   lXoffset); //Continue   until   halfway   point   
}     

void   DrawCircle(CDC*   pDC,   CPoint   p,   LONG   lRadius,   COLORREF   crBright,   COLORREF   crDark)   
{   
	LONG   lError,   lXoffset,   lYoffset;   
    
	//Check   to   see   that   the   coordinates   are   valid   
	ASSERT(   (p.x   +   lRadius   <=   LONG_MAX)   &&   (p.y   +   lRadius   <=   LONG_MAX)   );   
	ASSERT(   (p.x   -   lRadius   >=   LONG_MIN)   &&   (p.y   -   lRadius   >=   LONG_MIN)   );   
    
	//Set   starting   values   
	lXoffset   =   lRadius;   
	lYoffset   =   0;   
	lError       =   -lRadius;   
    
	do   {   
		const   double   Pi   =   3.141592654,     
			Pi_on_2   =   Pi   *   0.5,   
			Three_Pi_on_2   =   Pi   *   1.5;   
		COLORREF   crColour;   
		double       dAngle   =   atan2(lYoffset,   lXoffset);   
		
		//Draw   the   current   pixel,   reflected   across   all   eight   arcs   
		crColour   =   GetColour(dAngle,   crBright,   crDark);   
		pDC->SetPixelV(p.x   +   lXoffset,   p.y   +   lYoffset,   crColour);   
		
		crColour   =   GetColour(Pi_on_2   -   dAngle,   crBright,   crDark);   
		pDC->SetPixelV(p.x   +   lYoffset,   p.y   +   lXoffset,   crColour);   
		
		crColour   =   GetColour(Pi_on_2   +   dAngle,   crBright,   crDark);   
		pDC->SetPixelV(p.x   -   lYoffset,   p.y   +   lXoffset,   crColour);   
		
		crColour   =   GetColour(Pi   -   dAngle,   crBright,   crDark);   
		pDC->SetPixelV(p.x   -   lXoffset,   p.y   +   lYoffset,   crColour);   
		
		crColour   =   GetColour(-Pi   +   dAngle,   crBright,   crDark);   
		pDC->SetPixelV(p.x   -   lXoffset,   p.y   -   lYoffset,   crColour);   
		
		crColour   =   GetColour(-Pi_on_2   -   dAngle,   crBright,   crDark);   
		pDC->SetPixelV(p.x   -   lYoffset,   p.y   -   lXoffset,   crColour);   
		
		crColour   =   GetColour(-Pi_on_2   +   dAngle,   crBright,   crDark);   
		pDC->SetPixelV(p.x   +   lYoffset,   p.y   -   lXoffset,   crColour);   
		
		crColour   =   GetColour(-dAngle,   crBright,   crDark);   
		pDC->SetPixelV(p.x   +   lXoffset,   p.y   -   lYoffset,   crColour);   
		
		//Advance   the   error   term   and   the   constant   X   axis   step   
		lError   +=   lYoffset++;   
		
		//Check   to   see   if   error   term   has   overflowed   
		if   ((lError   +=   lYoffset)   >=   0)   
			lError   -=   --lXoffset   *   2;   
		
	}   while   (lYoffset   <=   lXoffset); //Continue   until   halfway   point   
}     


/////////////////////////////////////////////////////////////////////////////   
//   CRoundButton   

CRoundButton::CRoundButton()   
{   
	m_bDrawDashedFocusCircle   =   TRUE;   
}   

CRoundButton::~CRoundButton()   
{   
	m_rgn.DeleteObject();   
}   

BEGIN_MESSAGE_MAP(CRoundButton,   CButton)   
//{{AFX_MSG_MAP(CRoundButton)   
//}}AFX_MSG_MAP   
END_MESSAGE_MAP()   

/////////////////////////////////////////////////////////////////////////////   
//   CRoundButton   message   handlers   

void   CRoundButton::PreSubclassWindow()     
{   
	CButton::PreSubclassWindow();   
    
	ModifyStyle(0,   BS_OWNERDRAW);   
    
	CRect   rect;   
	GetClientRect(rect);   
    
	//   Resize   the   window   to   make   it   square   
	rect.bottom   =   rect.right   =   min(rect.bottom,rect.right);   
    
	//   Get   the   vital   statistics   of   the   window   
	m_ptCentre   =   rect.CenterPoint();   
	m_nRadius     =   rect.bottom/2-1;   
    
	//   Set   the   window   region   so   mouse   clicks   only   activate   the   round   section     
	//   of   the   button   
	m_rgn.DeleteObject();     
	SetWindowRgn(NULL,   FALSE);   
	m_rgn.CreateEllipticRgnIndirect(rect);   
	SetWindowRgn(m_rgn,   TRUE);   
    
	//   Convert   client   coords   to   the   parents   client   coords   
	ClientToScreen(rect);   
	CWnd*   pParent   =   GetParent();   
	if   (pParent)   pParent->ScreenToClient(rect);   
    
	//   Resize   the   window   
	MoveWindow(rect.left,   rect.top,   rect.Width(),   rect.Height(),   TRUE);   
}   

void   CRoundButton::DrawItem(LPDRAWITEMSTRUCT   lpDrawItemStruct)     
{   
	ASSERT(lpDrawItemStruct   !=   NULL);   
    
	CDC*   pDC       =   CDC::FromHandle(lpDrawItemStruct->hDC);   
	CRect   rect   =   lpDrawItemStruct->rcItem;   
	UINT   state   =   lpDrawItemStruct->itemState;   
	UINT   nStyle   =   GetStyle();   
	int   nRadius   =   m_nRadius;   
    
	int   nSavedDC   =   pDC->SaveDC();   
    
	pDC->SelectStockObject(NULL_BRUSH);   
	pDC->FillSolidRect(rect,   ::GetSysColor(COLOR_BTNFACE));   
    
	//   Draw   the   focus   circle   around   the   button   
	if   ((state   &   ODS_FOCUS)   &&   m_bDrawDashedFocusCircle)   
		DrawCircle(pDC,   m_ptCentre,   nRadius--,   RGB(0,0,0));   
    
	//   Draw   the   raised/sunken   edges   of   the   button   (unless   flat)   
	if   (nStyle   &   BS_FLAT)   {   
		DrawCircle(pDC,   m_ptCentre,   nRadius--,   RGB(0,0,0));   
		DrawCircle(pDC,   m_ptCentre,   nRadius--,   ::GetSysColor(COLOR_3DHIGHLIGHT));   
	}   else   {   
		if   ((state   &   ODS_SELECTED)) {   
			DrawCircle(pDC,   m_ptCentre,   nRadius--,     
				::GetSysColor(COLOR_3DDKSHADOW),   ::GetSysColor(COLOR_3DHIGHLIGHT));   
			DrawCircle(pDC,   m_ptCentre,   nRadius--,     
				::GetSysColor(COLOR_3DSHADOW),   ::GetSysColor(COLOR_3DLIGHT));   
		}   else   {   
			DrawCircle(pDC,   m_ptCentre,   nRadius--,     
				::GetSysColor(COLOR_3DHIGHLIGHT),   ::GetSysColor(COLOR_3DDKSHADOW));   
			DrawCircle(pDC,   m_ptCentre,   nRadius--,     
				::GetSysColor(COLOR_3DLIGHT),   ::GetSysColor(COLOR_3DSHADOW));   
		}   
	}   
    
	//   draw   the   text   if   there   is   any   
	CString   strText;   
	GetWindowText(strText);   
    
	if   (!strText.IsEmpty())   
	{   
		CRgn   rgn;   
		rgn.CreateEllipticRgn(m_ptCentre.x-nRadius,   m_ptCentre.y-nRadius,     
			m_ptCentre.x+nRadius,   m_ptCentre.y+nRadius);   
		pDC->SelectClipRgn(&rgn);   
		
		CSize   Extent   =   pDC->GetTextExtent(strText);   
		CPoint   pt   =   CPoint(   m_ptCentre.x   -   Extent.cx/2,   m_ptCentre.x   -   Extent.cy/2   );   
		
		if   (state   &   ODS_SELECTED)   pt.Offset(1,1);   
		
		pDC->SetBkMode(TRANSPARENT);   
		
		if   (state   &   ODS_DISABLED)   
			pDC->DrawState(pt,   Extent,   strText,   DSS_DISABLED,   TRUE,   0,   (HBRUSH)NULL);   
		else   
			pDC->TextOut(pt.x,   pt.y,   strText);   
		
		pDC->SelectClipRgn(NULL);   
		rgn.DeleteObject();   
	}   
    
	//   Draw   the   focus   circle   on   the   inside   of   the   button   
	if   ((state   &   ODS_FOCUS)   &&   m_bDrawDashedFocusCircle)   
		DrawCircle(pDC,   m_ptCentre,   nRadius-2,   RGB(0,0,0),   TRUE);   
    
	pDC->RestoreDC(nSavedDC);   
}   

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97久久精品人人爽人人爽蜜臀| 综合欧美亚洲日本| 91精品免费在线| 欧美三级三级三级爽爽爽| 在线观看亚洲一区| 在线欧美小视频| 欧美最新大片在线看| 欧美色成人综合| 欧美狂野另类xxxxoooo| 91精品国产综合久久精品| 欧美一区二区在线免费观看| 日韩欧美你懂的| 久久婷婷成人综合色| 国产欧美日韩亚州综合 | 91麻豆精品国产91久久久资源速度| 欧美在线观看视频一区二区| 欧美体内she精视频| 欧美伦理影视网| 欧美精选在线播放| 精品欧美一区二区久久| 国产欧美日韩综合| 亚洲美女屁股眼交| 日韩高清一区二区| 麻豆久久一区二区| 国产69精品久久99不卡| 一本一道久久a久久精品| 欧美系列日韩一区| 日韩精品一区二区三区视频| 精品美女被调教视频大全网站| 国产亚洲精品精华液| 中文字幕中文字幕在线一区 | 久久嫩草精品久久久精品一| 欧美国产国产综合| 一区二区三区四区蜜桃| 青青草国产成人99久久| 国产suv精品一区二区三区| 一本色道a无线码一区v| 911国产精品| 日本一区二区三区久久久久久久久不| 一区视频在线播放| 亚洲一二三区不卡| 久久99国产精品久久99| av在线综合网| 4hu四虎永久在线影院成人| 久久影院午夜片一区| 亚洲精品国产精品乱码不99| 日本vs亚洲vs韩国一区三区 | 欧美大片在线观看一区| 中文字幕欧美三区| 亚洲影视在线播放| 国产精品996| 欧美美女直播网站| 中文字幕精品—区二区四季| 午夜精品aaa| 成人午夜激情片| 欧美一区二区在线看| 亚洲欧洲性图库| 免费观看久久久4p| 在线一区二区三区四区| 久久久久久久久久久电影| 亚洲国产aⅴ天堂久久| 国产精品影视天天线| 欧美在线一二三| 欧美国产日本韩| 免费高清不卡av| 在线看国产一区二区| 久久精品欧美日韩精品| 日韩成人一级片| 色婷婷精品久久二区二区蜜臀av| 久久亚洲一区二区三区明星换脸| 亚洲无人区一区| 97aⅴ精品视频一二三区| 久久久久久久综合| 午夜a成v人精品| 91高清视频免费看| 国产精品久久久久久户外露出| 久久成人久久鬼色| 欧美日韩精品欧美日韩精品一| 亚洲视频资源在线| 国产激情偷乱视频一区二区三区| 欧美一区二区三区啪啪| 一区二区三区不卡视频| 95精品视频在线| 国产精品无圣光一区二区| 国产综合一区二区| 日韩免费看网站| 日韩av在线播放中文字幕| 欧美色区777第一页| 樱桃国产成人精品视频| 91天堂素人约啪| 中文字幕一区二区三区蜜月| 国产激情视频一区二区在线观看 | 欧美日韩一区二区在线观看| 亚洲美腿欧美偷拍| 91丝袜呻吟高潮美腿白嫩在线观看| 欧美激情艳妇裸体舞| 国产福利精品一区二区| 久久久久九九视频| 国产自产2019最新不卡| 欧美精品一区二区三区很污很色的 | 99re热视频精品| 国产精品大尺度| 91啪亚洲精品| 亚洲自拍欧美精品| 欧美日韩国产小视频在线观看| 亚洲国产sm捆绑调教视频| 欧美日韩综合色| 天天综合天天综合色| 69久久夜色精品国产69蝌蚪网| 日韩电影一区二区三区四区| 欧美一区二区私人影院日本| 奇米一区二区三区| 日韩欧美亚洲国产精品字幕久久久| 天天综合天天做天天综合| 欧美精品一级二级三级| 欧美aa在线视频| 日韩欧美国产精品| 久久精品国产成人一区二区三区 | 国产三级欧美三级日产三级99| 国产一区二区视频在线| 亚洲国产精品国自产拍av| 成人av网站在线观看免费| 综合激情成人伊人| 一本大道久久精品懂色aⅴ| 亚洲午夜影视影院在线观看| 欧美日韩午夜精品| 蜜臀av亚洲一区中文字幕| 亚洲精品一线二线三线| 成人黄色免费短视频| 一区二区三区蜜桃| 欧美一区二区人人喊爽| 丁香婷婷综合五月| 亚洲综合激情小说| 欧美不卡一二三| 北岛玲一区二区三区四区| 亚洲午夜激情网页| 欧美xxxxx裸体时装秀| 成人午夜av电影| 亚洲人成在线播放网站岛国| 欧美亚洲日本国产| 日本中文字幕一区二区视频 | 国产在线视视频有精品| 欧美激情一区二区三区四区| 一本一道综合狠狠老| 五月激情综合网| 久久久久久久久99精品| 色94色欧美sute亚洲线路二 | 99久久精品国产导航| 午夜av区久久| 国产婷婷一区二区| 欧美日韩免费观看一区二区三区| 国产乱码精品一品二品| 亚洲免费观看高清| 欧美精品一区二区三| 色欧美片视频在线观看在线视频| 久久国产综合精品| 亚洲欧美国产毛片在线| 久久综合色鬼综合色| 欧美伊人久久久久久久久影院| 国模无码大尺度一区二区三区| 亚洲精品国产一区二区三区四区在线| 欧美老人xxxx18| 91丨porny丨最新| 精品一区二区三区欧美| 亚洲一区中文日韩| 国产欧美中文在线| 欧美精品久久99久久在免费线 | 色哟哟精品一区| 国产一区二三区| 五月天欧美精品| 亚洲欧洲日韩一区二区三区| 欧美一区二区三区四区视频| 色av一区二区| 成人网在线免费视频| 秋霞午夜av一区二区三区| 亚洲欧美日韩在线不卡| 国产偷国产偷精品高清尤物| 日韩欧美一级二级| 欧美乱妇15p| 在线观看一区日韩| 99国产精品视频免费观看| 国产一区中文字幕| 免费观看一级欧美片| 日日嗨av一区二区三区四区| 亚洲另类在线一区| 国产精品免费看片| 国产三级精品在线| 久久久久久久久久久久久女国产乱| 欧美一区在线视频| 欧美福利一区二区| 欧美亚洲国产一区二区三区 | 欧美成人a∨高清免费观看| 欧美亚洲综合在线| 色激情天天射综合网| 91美女片黄在线观看91美女| 国产成人精品一区二区三区四区 | 国产精品毛片久久久久久| 久久美女艺术照精彩视频福利播放 | 欧美色图激情小说| 日本国产一区二区|