📄 huangxu.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 + -