梦溪学林CaaaaView::CaaaaView()
{
m_pntCount=0;
xl=200;
xr=600;
yb=100;
yt=350;
}
void MidBresenhamLine(CDC *pDC,int x0,int y0,int x1,int y1){
int dx,dy,d,up,down,x,y;
if(x0>x1){
x=x1;x1=x0;x0=x;
y=y1;y1=y0;y0=y;
}
x=x0;y=y0;
dx=x1-x0;dy=y1-y0;
d=dx-2*dy;
up=2*x-2*y;down=-2*dy;
while(x<=x1){
pDC->SetPixel(x,y,355);
x++;
if(d<0){
y++;
d+=up;
}
else d+=down;
}
}
int LBLineClipTest(float p,float q,float &umax,float &umin)
{
float r=0.0;
if(p<0.0){
r=q/p;
TRACE(_T("r=%.4f\n"),r);
if(r>umin) 总酚return 0;
else if(r>umax) umax=r;
}
else if(p>0.0){
r=q/p;
TRACE(_T("r=%.4f\n"),r);
if(r<umax) return 0;
else if(r<umin) umin=r;
}
else if(q<0.0) return 0;
return 1;
}
void LBLineClip(CDC* pDC,float xl,float xr,float yb,float yt,float x1,float图灵机 y1,float x2,float y2)
{
float umax,umin,deltax,deltay;
deltax=x2-x1; deltay=y2-y1; umax=0.0; umin=1.0;
if( LBLineClipTest(-deltax,x1-xl,umax,umin)){
系统脱敏疗法案例 if( LBLineClipTest(deltax,xr-x1,umax,umin)){ if( LBLineClipTest(-deltay,y1-yb,umax,umin)){
if( LBLineClipTest(deltay,yt-y1,umax,umin)){
x1=int(x1+umax*deltax+0.5);
y1=int(y1+umax*deltay+0.5);
x2=int(x1+umin*deltax+0.5);
y2=int(y1+umin*deltay+0.5);
}
MidBresenhamLine(pDC,x1,y1,x2,y2);
}
}
}
void CaaaaView::OnLButtonDown(UINT nFlags, CPoint point)
{
//AfxMessageBox(_T("click"));
m_pnts[m_pntCount]=point;
m_pntCount++;
if(m_pntCount>1)
{
CDC *pDC=GetDC();
LBLineClip(pDC,xl,xr,yb,yt,m_pnts[m_pntCount-2].x,m_pnts[m_pntCount-2].y,m_pnts[m_pntCount-1].x,m_pnts[m_pntCount-1].y);
ReleaseDC(pDC);
m_pntCount=0;
}
人参多糖 CView::OnLButtonDown(nFlags, point); }