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

📄 showjpgview.cpp

📁 vc实现绘图程序 用点击菜单栏
💻 CPP
字号:
// showjpgView.cpp : CshowjpgView 类的实现
//

#include "stdafx.h"
#include "showjpg.h"

#include "showjpgDoc.h"
#include "showjpgView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CshowjpgView

IMPLEMENT_DYNCREATE(CshowjpgView, CScrollView)

BEGIN_MESSAGE_MAP(CshowjpgView, CScrollView)
	// 标准打印命令
	ON_COMMAND(ID_FILE_PRINT, &CScrollView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, &CScrollView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CScrollView::OnFilePrintPreview)
	ON_COMMAND(ID_FILE_OPEN, &CshowjpgView::OnFileOpen)
	ON_COMMAND(ID_PINT2DTRA, &CshowjpgView::OnPint2dtra)
	ON_WM_LBUTTONDOWN()
	ON_WM_MOUSEMOVE()
	ON_COMMAND(ID_2DPINTTRA, &CshowjpgView::On2dpinttra)
	ON_WM_LBUTTONUP()
	ON_WM_RBUTTONDOWN()
	ON_WM_SETCURSOR()
	ON_WM_ERASEBKGND()
	ON_WM_PAINT()
END_MESSAGE_MAP()

// CshowjpgView 构造/析构

CshowjpgView::CshowjpgView()
{
	// TODO: 在此处添加构造代码
	iWidth =800;
	iHeight =600;
	pStart.x=0;
	pStart.y =0;
	pEnd.x=100;
	pEnd.y =100;
    bPint = FALSE;
    bMdown = FALSE;
	bFirst = FALSE;

	//m_hMouseCursor   =   AfxGetApp()->LoadCursor(   IDC_CURSOR1   )   ; 

}

CshowjpgView::~CshowjpgView()
{
}

BOOL CshowjpgView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: 在此处通过修改
	//  CREATESTRUCT cs 来修改窗口类或样式

	return CView::PreCreateWindow(cs);
}

// CshowjpgView 绘制

void CshowjpgView::OnDraw(CDC*  pDC)
{
	CshowjpgDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;
	if(0==input.extraname.Compare(_T("jpg"))||0==input.extraname.Compare(_T("jpeg")))
	{
		showPic.showPic2D(pDC,input.strPicPath);			// 显示类变量调用显示函数
	}
}


// CshowjpgView 打印

BOOL CshowjpgView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// 默认准备
	return DoPreparePrinting(pInfo);
}

void CshowjpgView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: 添加额外的打印前进行的初始化过程
}

void CshowjpgView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: 添加打印后进行的清除过程
}


// CshowjpgView 诊断

#ifdef _DEBUG
void CshowjpgView::AssertValid() const
{
	CView::AssertValid();
}

void CshowjpgView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CshowjpgDoc* CshowjpgView::GetDocument() const // 非调试版本是内联的
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CshowjpgDoc)));
	return (CshowjpgDoc*)m_pDocument;
}
#endif //_DEBUG


// 显示jpg文件

void CshowjpgView::showjpg(CDC * pDC,CString  strPath)
{
}

void CshowjpgView::OnFileOpen()
{
    // 输入类变量调用打开文件函数。
	input.fileOpen();
	Invalidate();
}

void CshowjpgView::OnInitialUpdate()
{
	CScrollView::OnInitialUpdate();
    SetScrollSizes(MM_TEXT, CSize(iWidth,iHeight) );
}
// 当点击此操作后开始进行绘图操作
void CshowjpgView::OnPint2dtra()
{
  

}
// 处理鼠标左键按下的操作。
void CshowjpgView::OnLButtonDown(UINT nFlags, CPoint point)
{
	//
	if(bPint)
	{
		// 得到鼠标按下的点
  		if(bFirst)
		{
           pStart = point ;
           bFirst=!bFirst;
		}
		pStart = point;
		 bMdown = TRUE;

	}
	CScrollView::OnLButtonDown(nFlags, point);
}
// 处理鼠标的拖动操作
void CshowjpgView::OnMouseMove(UINT nFlags, CPoint point)
{
   if(bMdown)			// bMdown 应该在鼠标左键弹起的时侯变成FALSE;
 {
	   pEnd = point;
	   CDC * pDC = GetDC();
       //CPen pen;
       //pen.CreatePen(PS_SOLID, 2, RGB(255, 0, 0));//调整画笔
       //pDC->SelectObject(&pen);
	   Draw(pDC,pStart,pEnd);
	   OnPaint();
	   pStart = pEnd;
 }
	CScrollView::OnMouseMove(nFlags, point);

}
// 绘制2D图像的轮廓线
void CshowjpgView::On2dpinttra()
{
     // 将鼠标变成画笔的形式
     OnSetCursor(this,HTZOOM,NULL);
	 bPint =!bPint;
	 bFirst = !bFirst;
	 m_hMouseCursor   =   AfxGetApp()->LoadCursor(   IDC_CURSOR1   )   ; 
}

void CshowjpgView::OnLButtonUp(UINT nFlags, CPoint point)
{
     if(bMdown)
		 bMdown = FALSE;
	 pStart  = point;
	 CScrollView::OnLButtonUp(nFlags, point);
}

void CshowjpgView::OnRButtonDown(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	if(bPint)
	{
		CDC * pDC = GetDC();
		CPen pen;
		pen.CreatePen(PS_SOLID, 2, RGB(255, 0, 0));//调整画笔
		pDC->SelectObject(&pen);
		Draw(pDC,pStart,point);
	   pStart = point;
	}
	CScrollView::OnRButtonDown(nFlags, point);
}
// 修改光标的形状  没有使用上
BOOL CshowjpgView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
	
        ASSERT(m_hMouseCursor!=NULL);   
        ::SetCursor(m_hMouseCursor);   
        return   TRUE   ;   

	//return CScrollView::OnSetCursor(pWnd, nHitTest, message);
}
//  画图函数主要是绘制轮廓线
void  CshowjpgView::Draw(CDC *pDC, CPoint Start, CPoint End)
{
	pDC->MoveTo(Start);
	pDC->LineTo(End);

    //DrawText(pDC);
}

BOOL CshowjpgView::OnEraseBkgnd(CDC* pDC)
{
	//DrawText(pDC);

}

void CshowjpgView::OnPaint()
{
	//CPaintDC dc(this);
    //CDC * pDC=GetDC();
	//DrawText( pDC);
}

void  CshowjpgView::DrawText(CDC *pDC)
{
	
	CDC  MemDC;			// 定义一个显示设备对象
	CBitmap  MemBitmap ;	// 定一个位图对象
 
	MemDC.CreateCompatibleDC(pDC); 
    CRect  rect;
	GetClientRect(&rect);
	MemBitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height()); 

	//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上 

	CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap); 
	
	MemDC.FillSolidRect(0,0,rect.Width(),rect.Height(),RGB(255,255,255)); 

   // DrawText(&MemDC);
     int i,j;
	for(i=0;i<500;i=i+5)
	{
		for(j=0;j<500;j=j+5)
		{
			MemDC.MoveTo(i,j);
			MemDC.LineTo(i+10,j+5);
		}
	}
	pDC->BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY); 
    
	//绘图完成后的清理 
	MemBitmap.DeleteObject(); 
	MemDC.DeleteDC();
	

}

⌨️ 快捷键说明

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