⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 huangxu.h

📁 计算机图形学,用VC实现的画直线方法
💻 H
字号:
#include "windows.h"
class huangxu
{
public:
	void DDA(CDC*pDC,int xa,int ya,int xb,int yb,int m_red,int m_green,int m_blue);
	void MID(CDC *pDC,int xa,int ya,int xb,int yb,int m_red,int m_green,int m_blue);
	void Bresenham(CDC *pDC,int x1,int y1,int x2,int y2,int m_red,int m_green,int m_blue);
};
void huangxu::DDA(CDC *pDC,int xa,int ya,int xb,int yb,int m_red,int m_green,int m_blue)
{
//	CWnd hWnd;
	
	int c=RGB(m_red,m_green,m_blue);
	int x,y;
	float dx,dy,k;
	dx=(float)(xb-xa),dy=(float)(yb-ya);
	k=dy/dx,y=ya;
	if(abs(k)<1)
	{
		for(x=xa;x<=xb;x++)
		{
			pDC->SetPixel(x,int(y+0.5),c);
			y=y+k;
		}
	}
	else if(abs(k)>=1)
	{
		for(y=ya;y<=yb;y++)
		{
			pDC->SetPixel(int(x+0.5),y,c);
			x=x+1/k;
		}
	}
//	ReleaseDC(pDC);
}
void huangxu::MID(CDC *pDC,int xa,int ya,int xb,int yb,int m_red,int m_green,int m_blue)
{
//	CWnd hWnd;
	//=GetDC();
	int c=RGB(m_red,m_green,m_blue);
	float a,b,d1,d2,d,x,y;
	a=yb-ya,b=xb-xa,d=2*a+b;
	d1=2*a,d2=2*(a+b);
	x=xa,y=ya;
	pDC->SetPixel(int(x),int(y),c);
	while(x<xb)
	{
		if(d<0)
		{
			x++,y++,d+=d2;
		}
		else 
		{
			x++,d+=d1;
		}
		pDC->SetPixel(int(x),int(y),c);
	}
//	ReleaseDC(pDC);
}
void huangxu::Bresenham(CDC *pDC,int x1,int y1,int x2,int y2,int m_red,int m_green,int m_blue)
{
//	CWnd hWnd;
	//=GetDC();
	int c=RGB(m_red,m_green,m_blue);
	int i,s1,s2,interchange;
	float x,y,deltax,deltay,f,temp;
	x=x1;
	y=y1;
	deltax=abs(x2-x1);
	deltay=abs(y2-y1);
	if(x2-x1>=0) s1=1;
	else s1=-1;
	if(y2-y1>=0) s2=1;
	else s2=-1;
	if(deltay>deltax)
	{
		temp=deltax;
		deltax=deltay;
		deltay=temp;
		interchange=1;
	}
	else
		interchange=0;
	f=2*deltay-deltax;
	pDC->SetPixel(int(x),int(y),c);
	for(i=1;i<=deltax;i++)
	{
		if(f>=0)
		{
			if(interchange==1)
				x+=s1;
			else
				y+=s2;
			pDC->SetPixel(int(x),int(y),c);
			f=f-2*deltax;
		}
		else
		{
			if(interchange==1)
				y+=s2;
			else
				x+=s1;
			f=f+2*deltay;
		}
	}
//	ReleaseDC(pDC);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -