📄 showjpgview.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 + -