接上一个帖子,View的源代码
/////////////////////////////////////////////////////////////////////////////
// CFY2D_CIView
IMPLEMENT_DYNCREATE(CFY2D_CIView, CView)
BEGIN_MESSAGE_MAP(CFY2D_CIView, CView)
//{{AFX_MSG_MAP(CFY2D_CIView)
ON_COMMAND(ID_NationBoundary, OnNationBoundary)
ON_COMMAND(ID_City, OnCity)
ON_COMMAND(ID_ShowCCM, OnShowCCM)
ON_COMMAND(ID_CIdetect, OnCIdetect)
ON_COMMAND(ID_ISODATASHOW, OnIsodatashow)
ON_COMMAND(ID_Show_Pre_CCM, OnShowPreCCM)
ON_COMMAND(ID_OverLap, OnOverLap)
ON_COMMAND(ID_ShowCloudClass, OnShowCloudClass)
ON_COMMAND(ID_CIShow, OnCIShow)
//}}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()
/////////////////////////////////////////////////////////////////////////////
// CFY2D_CIView construction/destruction
CFY2D_CIView::CFY2D_CIView()
{
// TODO: add construction code here
Cluster_BLU_LUT[ 0]= 0; Cluster_BLU_LUT[ 1]= 0; Cluster_BLU_LUT[ 2]= 0;
Cluster_BLU_LUT[ 3]= 0; Cluster_BLU_LUT[ 4]=100; Cluster_BLU_LUT[ 5]=143;
Cluster_BLU_LUT[ 6]=212; Cluster_BLU_LUT[ 7]= 0; Cluster_BLU_LUT[ 8]= 0;
Cluster_BLU_LUT[ 9]= 0; Cluster_BLU_LUT[10]=235; Cluster_BLU_LUT[11]=248;
Cluster_BLU_LUT[12]=247; Cluster_BLU_LUT[13]=250; Cluster_BLU_LUT[14]=200;
Cluster_BLU_LUT[15]=247;
Cluster_GRE_LUT[ 0]= 0; Cluster_GRE_LUT[ 1]= 0; Cluster_GRE_LUT[ 2]= 0;
Cluster_GRE_LUT[ 3]= 0; Cluster_GRE_LUT[ 4]= 85; Cluster_GRE_LUT[ 5]=134;
Cluster_GRE_LUT[ 6]= 50; Cluster_GRE_LUT[ 7]=255; Cluster_GRE_LUT[ 8]=183;
Cluster_GRE_LUT[ 9]=255; Cluster_GRE_LUT[10]=255; Cluster_GRE_LUT[11]=205;
Cluster_GRE_LUT[12]=182; Cluster_GRE_LUT[13]=133; Cluster_GRE_LUT[14]= 50;
Cluster_GRE_LUT[15]= 84;
Cluster_RED_LUT[ 0]=100; Cluster_RED_LUT[ 1]=150; Cluster_RED_LUT[ 2]=190;
Cluster_RED_LUT[ 3]=255; Cluster_RED_LUT[ 4]=255; Cluster_RED_LUT[ 5]=255;
Cluster_RED_LUT[ 6]=210; Cluster_RED_LUT[ 7]=255; Cluster_RED_LUT[ 8]= 0;
Cluster_RED_LUT[ 9]= 0; Cluster_RED_LUT[10]= 0; Cluster_RED_LUT[11]=100;
Cluster_RED_LUT[12]= 83; Cluster_RED_LUT[13]=100; Cluster_RED_LUT[14]= 0;
Cluster_RED_LUT[15]= 33;
NationBoundary=false;
bNetFlag=false;
city=false;
cur_ccm=false;
pre_ccm=false;
ci_identify=false;
ci_ob=false;
cluster=false;
pre_cumulusidn=false;
cur_cumulusidn=false;
lap=false;
cloud=false;
}
CFY2D_CIView::~CFY2D_CIView()
{
}
BOOL CFY2D_CIView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CFY2D_CIView drawing
void CFY2D_CIView::OnDraw(CDC* pDC)
{
CFY2D_CIDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
if (pDoc->T0readyIR1)
{
pDoc->dib.Draw(pDC,CPoint(0,0),pDoc->dib.GetDimensions());
}
if (pDoc->E_T0ready)
{
pDoc->dib.Draw(pDC,CPoint(0,0),pDoc->dib.GetDimensions());
}
if (pDoc->E_T1ready)
{
pDoc->dib.Draw(pDC,CPoint(0,0),pDoc->dib.GetDimensions());
}
if (pDoc->T1readyIR1)
{
pDoc->dib.Draw(pDC,CPoint(0,0),pDoc->dib.GetDimensions());
}
if (pDoc->IRready)
{
pDoc->dib.Draw(pDC,CPoint(0,0),pDoc->dib.GetDimensions());
}
if(pDoc->py)
{
pDoc->dib.Draw(pDC,CPoint(850,0),pDoc->dib.GetDimensions());
}
if(pDoc->of)
{
pDoc->dib.Draw(pDC,CPoint(850,0),pDoc->dib.GetDimensions());
}
if (pDoc->VISready)
{
pDoc->dib.Draw(pDC,CPoint(0,0),pDoc->dib.GetDimensions());
}
if (pDoc->T2readyIR1)
{
pDoc->dib.Draw(pDC,CPoint(0,0),pDoc->dib.GetDimensions());
}
if (pDoc->zoom)
{
pDoc->dib.Draw(pDC,CPoint(0,0),pDoc->dib.GetDimensions());
}
if (pDoc->fusion)
{
pDoc->dib.Draw(pDC,CPoint(0,0),pDoc->dib.GetDimensions());
}
if (pDoc->otus)
{
CCMShow(pDC,pDoc->fy_t0.ccmmask);
}
if (cur_ccm)
{
CCMShow(pDC,pDoc->fy_t1.ccmmask);
}
if(cloud)
{
CloudShow(pDC,pDoc->fy_t0.ccmmask);
}
if (cur_cumulusidn)
{
IDNShow(pDC,pDoc->fy_t1.CumulusIDN);
}
if (pre_cumulusidn)
{
IDNShow(pDC,pDoc->fy_t0.CumulusIDN);
}
if (lap)
{
IDNShow(pDC,pDoc->fy_t0.CumulusIDN_match);
// IDNShow(pDC,pDoc->fy_t0.CumulusIDN_OF);
}
if(pDoc->predistill)
{
for(int k=1;k<=pDoc->fy_t0 .num ;k++)
{
for(int j=0;j<700;j++)
for(int i=0;i<700;i++)
{
if(pDoc->fy_t0.CuJC [j*700+i]==k)
{
if(k==1)
pDC->SetPixel((i+50),(j+50),RGB(255,0,255));/////////////////
else if(k<11)
pDC->SetPixel((i+50),(j+50),RGB(255,0,0));
else if(k<16)
pDC->SetPixel((i+50),(j+50),RGB(255,0,0));
else
pDC->SetPixel((i+50),(j+50),RGB(255,0,0));
}
}
}
}
if (pre_ccm)
{
CCMShow(pDC,pDoc->fy_t0.ccmmask);
}
if (ci_identify)
{
CIShow(pDC,pDoc->fy_t1.BmpCI_BT);
}
if (ci_ob)
{
CIShow(pDC,pDoc->fy_t1.BmpCI_BT);
}
if (cluster)
{
ShowCluster(pDC,pDoc->PixelCluster);
DrawIsodataLUT(pDC);
}
if (NationBoundary)
{
NationB(pDC);
}
if (city)
{
CityB(pDC);
}
}
/////////////////////////////////////////////////////////////////////////////
// CFY2D_CIView printing
BOOL CFY2D_CIView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CFY2D_CIView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CFY2D_CIView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CFY2D_CIView diagnostics
#ifdef _DEBUG
void CFY2D_CIView::AssertValid() const
{
CView::AssertValid();
}
void CFY2D_CIView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CFY2D_CIDoc* CFY2D_CIView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CFY2D_CIDoc)));
return (CFY2D_CIDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CFY2D_CIView message handlers
void CFY2D_CIView::OnNationBoundary()
{
// TODO: Add your command handler code here
Invalidate();
CFY2D_CIDoc *pDoc=GetDocument();
ASSERT_VALID(pDoc);
pDoc->fy2d.GetProvince();
NationBoundary=!NationBoundary;
}
bool CFY2D_CIView::NationB(CDC *pDC)
{
CFY2D_CIDoc *pDoc=GetDocument();
ASSERT_VALID(pDoc);
// pDoc->fy2d.GetMap();
CPen* newpen=new CPen(PS_SOLID,1,RGB(0,100,255));
CPen* oldpen=pDC->SelectObject(newpen);
for(int j=0;j<135-1 ;j++)
{
pDC->MoveTo (pDoc->fy2d.provinceboundary[j]);
pDC->LineTo (pDoc->fy2d.provinceboundary[j+1]);
}
for(j=135;j<879-1 ;j++)
{
pDC->MoveTo (pDoc->fy2d.provinceboundary[j]);
pDC->LineTo (pDoc->fy2d.provinceboundary[j+1]);
}
for(j=879;j<910-1 ;j++)
{
pDC->MoveTo (pDoc->fy2d.provinceboundary[j]);
pDC->LineTo (pDoc->fy2d.provinceboundary[j+1]);
}
for(j=910;j<1040-1 ;j++)
{
pDC->MoveTo (pDoc->fy2d.provinceboundary[j]);
pDC->LineTo (pDoc->fy2d.provinceboundary[j+1]);
}
pDC->SelectObject(oldpen);
delete newpen;
return true;
}
void CFY2D_CIView::OnCity()
{
// TODO: Add your command handler code here
Invalidate();
CFY2D_CIDoc *pDoc=GetDocument();
ASSERT_VALID(pDoc);
pDoc->fy2d.GetCity();
city=!city;
}
bool CFY2D_CIView::CityB(CDC *pDC)
{
CFY2D_CIDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
long px,py;
int i;
CPen* newpen=new CPen(PS_SOLID,1,RGB(255,0,0));
CPen* oldpen=pDC->SelectObject(newpen);
CFont newfont; //标识城市名
newfont.CreateFont (12,0,0,0,400,FALSE,FALSE,FALSE,
ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,DEFAULT_PITCH | FF_SWISS,"宋体");
CFont* pOldFont=NULL;
pOldFont=pDC->SelectObject (&newfont);
pDC->SetTextColor (RGB(100,0,255));
pDC->SetBkMode (TRANSPARENT);
px=0;
py=0;
for(i=0;i<6;i++)
{
CPoint pttemp;
px=pDoc->fy2d.City[i].x;
py=pDoc->fy2d.City[i].y;
pttemp.x =px;
pttemp.y =py;
CRect rcEllipse(pttemp,pttemp);
rcEllipse.InflateRect (3,3);
pDC->Ellipse (rcEllipse);
pDC->SetTextAlign(TA_LEFT);
pDC->TextOut (px,py,pDoc->fy2d.CityName[i]);
}
pDC->SelectObject(pOldFont);
pDC->SelectObject (oldpen);
return true;
}
bool CFY2D_CIView::CCMShow(CDC *pDC, short *temp)
{
CFY2D_CIDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
for(int i=0;i<700 ;i++)//pDoc->fy2dData .FY2DKJHead .height
for(int j=0;j<700;j++)//pDoc->fy2dData .FY2DKJHead .width
{
if(temp [i*700 +j]==1)//pDoc-> fy2dData .FY2DKJHead .width
pDC->SetPixel ((j+50),(i+50),RGB(40,140,40));
}
return true;
}
void CFY2D_CIView::OnShowCCM()
{
// TODO: Add your command handler code here
Invalidate();
cur_ccm=!cur_ccm;
cur_cumulusidn=!cur_cumulusidn;
}
void CFY2D_CIView::OnCIdetect()
{
// TODO: Add your command handler code here
Invalidate();
ci_identify=!ci_identify;
}