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

📄 dlgshow.cpp

📁 模式识别中K均值算法的示例程序
💻 CPP
字号:
// DLGSHOW.cpp : 实现文件
//

#include "stdafx.h"
#include "k.h"
#include "DLGSHOW.h"
#include"math.h"
#include ".\dlgshow.h"


// DLGSHOW 对话框

IMPLEMENT_DYNAMIC(DLGSHOW, CDialog)
DLGSHOW::DLGSHOW(CWnd* pParent /*=NULL*/)
	: CDialog(DLGSHOW::IDD, pParent)
{
}

DLGSHOW::~DLGSHOW()
{
}

void DLGSHOW::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
}


BEGIN_MESSAGE_MAP(DLGSHOW, CDialog)
	ON_WM_PAINT()
	ON_WM_CREATE()
END_MESSAGE_MAP()


// DLGSHOW 消息处理程序

void DLGSHOW::OnPaint()
{
	CPaintDC dc(this); // device context for painting
	// TODO: 在此处添加消息处理程序代码
	// 不为绘图消息调用 CDialog::OnPaint()
	CRect rect;
	GetClientRect(rect);
	dc.FillSolidRect(rect,RGB(255,255,255)); 
	Draw();
}

BOOL DLGSHOW::Draw()
{
	CClientDC dc(this);
	float MaxX,MaxY,MinX,MinY;
	float tmp1,tmp3,tmp4,tmp5;
	tmp1=255.0/ClsNum;
	int i,tmp2;
	MaxX=Pos[0];
	MaxY=Pos[1];
	MinX=Pos[0];
	MinY=Pos[1];
	for(i=0;i<SmpNum;i++)
	{
		if(Pos[2*i]>MaxX)
			MaxX=Pos[2*i];
		else if(Pos[2*i]<MinX)
			MinX=Pos[2*i];
		if(Pos[2*i+1]>MaxY)
			MaxY=Pos[2*i];
		else if(Pos[2*i+1]<MinY)
			MinY=Pos[2*i];
	}
	float dx=fabs(MaxX-MinX);
	float dy=fabs(MaxY-MinY);
	CPen CoPen2(PS_DOT,1,RGB(0,0,0)),*OldPen;
	dc.SelectObject(&CoPen2);
	for(i=0;i<10;i++)
	{
		dc.MoveTo(i*190/dx+20,20);
		dc.LineTo(i*190/dx+20,220);
		dc.MoveTo(20,20+i*190/dy);
		dc.LineTo(220,20+i*190/dy);
	}
	CPen CoPen1(PS_SOLID,1,RGB(0,0,0));
	dc.SelectObject(&CoPen1);
	//----画坐标轴----//
	dc.MoveTo(20,20);
	dc.LineTo(220,20);
	dc.MoveTo(20,20);
	dc.LineTo(20,220);
	//-----画箭头-----//
	dc.MoveTo(220,20);
	dc.LineTo(215,17);
	dc.MoveTo(220,20);
	dc.LineTo(215,22);
	dc.MoveTo(20,220);
	dc.LineTo(17,215);
	dc.MoveTo(20,220);
	dc.LineTo(22,215);
	//------写字------//
	dc.TextOut(225,13,"X");
	dc.TextOut(15,225,"Y");
	
	for(i=0;i<SmpNum;i++)
	{
		tmp2=Cls[i]%3;
		if(tmp2==0)
		{
			tmp3=1;
			tmp4=0;
			tmp5=0;
		}
		else if(tmp2==1)
		{
			tmp3=0;
			tmp4=1;
			tmp5=0;
		}
		else
		{
			tmp3=0;
			tmp4=0;
			tmp5=1;
		}
		CPen pen;
		pen.CreatePen(PS_SOLID,5,RGB(tmp1*tmp3*Cls[i],tmp1*tmp4*Cls[i],tmp1*tmp5*Cls[i]));
		OldPen=dc.SelectObject(&pen);
		dc.MoveTo(20+Pos[2*i]*190/dx,20+Pos[2*i+1]*190/dy);
		dc.LineTo(20+Pos[2*i]*190/dx,20+Pos[2*i+1]*190/dy);
	}
	dc.SelectObject(OldPen);
	return TRUE;
}

int DLGSHOW::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;
	// TODO:  在此添加您专用的创建代码

	return 0;
}

BOOL DLGSHOW::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: 在此添加专用代码和/或调用基类
	return CDialog::PreCreateWindow(cs);
}

⌨️ 快捷键说明

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