?? showjpgview.cpp
字號:
// showjpgView.cpp : CshowjpgView 類的實現(xiàn)
//
#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)
// 標(biāo)準(zhǔn)打印命令
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 構(gòu)造/析構(gòu)
CshowjpgView::CshowjpgView()
{
// TODO: 在此處添加構(gòu)造代碼
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); // 顯示類變量調(diào)用顯示函數(shù)
}
}
// CshowjpgView 打印
BOOL CshowjpgView::OnPreparePrinting(CPrintInfo* pInfo)
{
// 默認(rèn)準(zhǔn)備
return DoPreparePrinting(pInfo);
}
void CshowjpgView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 添加額外的打印前進(jìn)行的初始化過程
}
void CshowjpgView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 添加打印后進(jìn)行的清除過程
}
// CshowjpgView 診斷
#ifdef _DEBUG
void CshowjpgView::AssertValid() const
{
CView::AssertValid();
}
void CshowjpgView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CshowjpgDoc* CshowjpgView::GetDocument() const // 非調(diào)試版本是內(nèi)聯(lián)的
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CshowjpgDoc)));
return (CshowjpgDoc*)m_pDocument;
}
#endif //_DEBUG
// 顯示jpg文件
void CshowjpgView::showjpg(CDC * pDC,CString strPath)
{
}
void CshowjpgView::OnFileOpen()
{
// 輸入類變量調(diào)用打開文件函數(shù)。
input.fileOpen();
Invalidate();
}
void CshowjpgView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
SetScrollSizes(MM_TEXT, CSize(iWidth,iHeight) );
}
// 當(dāng)點(diǎn)擊此操作后開始進(jìn)行繪圖操作
void CshowjpgView::OnPint2dtra()
{
}
// 處理鼠標(biāo)左鍵按下的操作。
void CshowjpgView::OnLButtonDown(UINT nFlags, CPoint point)
{
//
if(bPint)
{
// 得到鼠標(biāo)按下的點(diǎn)
if(bFirst)
{
pStart = point ;
bFirst=!bFirst;
}
pStart = point;
bMdown = TRUE;
}
CScrollView::OnLButtonDown(nFlags, point);
}
// 處理鼠標(biāo)的拖動操作
void CshowjpgView::OnMouseMove(UINT nFlags, CPoint point)
{
if(bMdown) // bMdown 應(yīng)該在鼠標(biāo)左鍵彈起的時侯變成FALSE;
{
pEnd = point;
CDC * pDC = GetDC();
//CPen pen;
//pen.CreatePen(PS_SOLID, 2, RGB(255, 0, 0));//調(diào)整畫筆
//pDC->SelectObject(&pen);
Draw(pDC,pStart,pEnd);
OnPaint();
pStart = pEnd;
}
CScrollView::OnMouseMove(nFlags, point);
}
// 繪制2D圖像的輪廓線
void CshowjpgView::On2dpinttra()
{
// 將鼠標(biāo)變成畫筆的形式
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: 在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值
if(bPint)
{
CDC * pDC = GetDC();
CPen pen;
pen.CreatePen(PS_SOLID, 2, RGB(255, 0, 0));//調(diào)整畫筆
pDC->SelectObject(&pen);
Draw(pDC,pStart,point);
pStart = point;
}
CScrollView::OnRButtonDown(nFlags, point);
}
// 修改光標(biāo)的形狀 沒有使用上
BOOL CshowjpgView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
ASSERT(m_hMouseCursor!=NULL);
::SetCursor(m_hMouseCursor);
return TRUE ;
//return CScrollView::OnSetCursor(pWnd, nHitTest, message);
}
// 畫圖函數(shù)主要是繪制輪廓線
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; // 定義一個顯示設(shè)備對象
CBitmap MemBitmap ; // 定一個位圖對象
MemDC.CreateCompatibleDC(pDC);
CRect rect;
GetClientRect(&rect);
MemBitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
//只有選入了位圖的內(nèi)存顯示設(shè)備才有地方繪圖,畫到指定的位圖上
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();
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -