MFC_应用函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/guanyuqiu/article/details/53066008

1.打开文件

static char BASED_CODE szFilter[]=
		"ALL Files (*.*)|*.*||";
	CFileDialog dlgFileOpen( TRUE,
		NULL,
		NULL,
		OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
		szFilter,
		this );
	if ( IDOK == dlgFileOpen.DoModal() )
	{
		strcpy( m_InFile, dlgFileOpen.m_ofn.lpstrFile);;
		pFile = fopen(m_InFile, "rb+");

	}

2.Picture Control 显示视频

实际是显示图片,利用ontimer循环进行显示
头文件.h
afx_msg void OnBnClickedOpenFile1();
	afx_msg void OnBnClickedOpenFile2();
	char m_InFile1[255];
	char m_InFile2[255];
	FILE	*pFile1;
	FILE	*pFile2;
	afx_msg void OnBnClickedRun();
	afx_msg void OnTimer(UINT_PTR nIDEvent);
	int		m_nFlag_Read1;
	int		m_nFlag_Read2;
	IplImage*	 m_pImage1;
	IplImage*	 m_pImage2;
	unsigned char	*pFileImage1;
	unsigned char	*pFileImage2;
	CDC*		 m_pDC1;
	HDC			 m_hDC1;
	CRect		 m_rect1;
	CDC*		 m_pDC2;
	HDC			 m_hDC2;
	CRect		 m_rect2;
	CStatic m_pShowImage1;
	CStatic m_pShowImage2;
	CStatic* m_pResultShow1;
	CStatic* m_pResultShow2;
.cpp文件
BOOL CViewDifferenceDlg::OnInitDialog()
{
	// TODO: 在此添加额外的初始化代码

	m_pImage1 = cvCreateImage(cvSize(WIDTH, HEIGHT), IPL_DEPTH_8U, 1);
	m_pImage2 = cvCreateImage(cvSize(WIDTH,HEIGHT), IPL_DEPTH_8U, 1);

	pFileImage1 = (unsigned char*)malloc(sizeof(unsigned char)*SIZE);
	pFileImage2 = (unsigned char*)malloc(sizeof(unsigned char)*SIZE);

	m_pResultShow1 = (CStatic*)GetDlgItem(IDC_SOURCE1);
	m_pResultShow1->GetClientRect(&m_rect1);
	m_pDC1 = m_pResultShow1->GetDC();
	m_hDC1 = m_pDC1->GetSafeHdc();

	m_pResultShow2 = (CStatic*)GetDlgItem(IDC_SOURCE2);
	m_pResultShow2->GetClientRect(&m_rect2);
	m_pDC2 = m_pResultShow2->GetDC();
	m_hDC2 = m_pDC2->GetSafeHdc();

	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}
void CViewDifferenceDlg::OnBnClickedRun()
{
	// TODO: Add your control notification handler code here
	SetTimer(1,25,NULL);
}

void CViewDifferenceDlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: Add your message handler code here and/or call default
	CvvImage	 cvImage;

	switch(nIDEvent)
	{
		//8位
	case 1:;
		if ((m_nFlag_Read1 == SIZE)&&(m_nFlag_Read2 == SIZE))
		{

			memcpy(m_pImage1->imageData,pFileImage1, sizeof(unsigned char)*SIZE);
			memcpy(m_pImage2->imageData, pFileImage2, sizeof(unsigned char)*SIZE);

			cvImage.CopyOf(m_pImage1,1);
			cvImage.DrawToHDC(m_hDC1, m_rect1);


			cvImage.CopyOf(m_pImage2,1);
			cvImage.DrawToHDC(m_hDC2, m_rect2);

			m_nFlag_Read1 = fread(pFileImage1, sizeof(unsigned char), SIZE, pFile1);
			m_nFlag_Read2 = fread(pFileImage2, sizeof(unsigned char), SIZE, pFile2);
		}
		else
		{
			fclose(pFile1);
			fclose(pFile2);
			free(pFileImage1);
			free(pFileImage2);
			cvReleaseImage(&m_pImage1);
			cvReleaseImage(&m_pImage2);

		}
		break;
	default:
		break;
	}

	CDialog::OnTimer(nIDEvent);
}

3.画线

POINT		 pDrawPoint1,pDrawPoint2;

pen.CreatePen(PS_SOLID,2,RGB(255,255,0));
pOldPen = m_pDC->SelectObject(&pen);
m_pDC->MoveTo(pDrawPoint1);
m_pDC->LineTo(pDrawPoint2);
m_pDC->SelectObject(pOldPen);
pen.DeleteObject();


4. 画框

CPen		  pen;
CPen		 *pOldPen;
CBrush		 *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
font.CreateFont(14,0,0,0,FW_MEDIUM,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,
				CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,DEFAULT_PITCH | FF_SWISS,"Arial");
CFont			*poldfont = m_pDC->SelectObject(&font); 
pen.CreatePen(PS_SOLID,2,RGB(255,255,0));
pOldPen = m_pDC->SelectObject(&pen);
m_pDC->SelectObject(pBrush);
left = m_Process.m_pBlob[i].BlobRect.nLeft * m_rect.Width() / m_nWidth;
up  = m_Process.m_pBlob[i].BlobRect.nTop * m_rect.Height() / m_nHeight;
right = m_Process.m_pBlob[i].BlobRect.nRight* m_rect.Width() / m_nWidth;
bottom = m_Process.m_pBlob[i].BlobRect.nBottom *m_rect.Height() / m_nHeight;
m_pDC->Rectangle(left, up, right, bottom);
m_pDC->SelectObject(pOldPen);
 
  
 
  
 
 

猜你喜欢

转载自blog.csdn.net/guanyuqiu/article/details/53066008