【VC开源代码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。网学会员整理了VC开源代码-GraphShowerView.cpp的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
// GraphShowerView.cpp : CGraphShowerView 类的实现
//
#include "stdafx.h"
#include "GraphShower.h"
#include "GraphShowerDoc.h"
#include "GraphShowerView.h"
#include "GraphShowerDoc.h"
#include "mainfrm.h"
#include "EffectDisplay.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// 图像显示类型枚举
enum ShowType
{
ST_NORMAL = 0, // 原始大小
ST_FIXWIDTH = 1, // 适合宽度
ST_FIXHEIGHT = 2, // 适合高度
ST_FIXSCREEN = 3 // 适合屏幕
};
// CGraphShowerView
IMPLEMENT_DYNCREATE(CGraphShowerView, CView)
BEGIN_MESSAGE_MAP(CGraphShowerView, CView)
// 标准打印命令
ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView::OnFilePrintPreview)
ON_WM_ERASEBKGND()
ON_COMMAND(ID_MODE_NORMAL, &CGraphShowerView::OnModeNormal)
ON_COMMAND(ID_MODE_WIDTH, &CGraphShowerView::OnModeWidth)
ON_COMMAND(ID_MODE_HEIGHT, &CGraphShowerView::OnModeHeight)
ON_COMMAND(ID_MODE_SCREEN, &CGraphShowerView::OnModeScreen)
ON_UPDATE_COMMAND_UI(ID_MODE_NORMAL, &CGraphShowerView::OnUpdateModeNormal)
ON_UPDATE_COMMAND_UI(ID_MODE_WIDTH, &CGraphShowerView::OnUpdateModeWidth)
ON_UPDATE_COMMAND_UI(ID_MODE_HEIGHT, &CGraphShowerView::OnUpdateModeHeight)
ON_UPDATE_COMMAND_UI(ID_MODE_SCREEN, &CGraphShowerView::OnUpdateModeScreen)
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONDOWN()
ON_WM_SETCURSOR()
ON_COMMAND(ID_IMAGE_PREV, &CGraphShowerView::OnImagePrev)
ON_COMMAND(ID_IMAGE_NEXT, &CGraphShowerView::OnImageNext)
ON_COMMAND(ID_IMAGE_FIRST, &CGraphShowerView::OnImageFirst)
ON_COMMAND(ID_IMAGE_LAST, &CGraphShowerView::OnImageLast)
ON_UPDATE_COMMAND_UI(ID_IMAGE_PREV, &CGraphShowerView::OnUpdateImagePrev)
ON_UPDATE_COMMAND_UI(ID_IMAGE_NEXT, &CGraphShowerView::OnUpdateImageNext)
ON_UPDATE_COMMAND_UI(ID_IMAGE_FIRST, &CGraphShowerView::OnUpdateImageFirst)
ON_UPDATE_COMMAND_UI(ID_IMAGE_LAST, &CGraphShowerView::OnUpdateImageLast)
ON_COMMAND(ID_EFFECT_NONE, &CGraphShowerView::OnEffectNone)
ON_COMMAND(ID_EFFECT_RAND, &CGraphShowerView::OnEffectRand)
ON_COMMAND(ID_EFFECT_SCANDOWN, &CGraphShowerView::OnEffectScan)
ON_COMMAND(ID_EFFECT_VSCAN, &CGraphShowerView::OnEffectDscan)
ON_COMMAND(ID_EFFECT_MOVERIGHT, &CGraphShowerView::OnEffectMove)
ON_COMMAND(ID_EFFECT_VBLIND, &CGraphShowerView::OnEffectVBlind)
ON_COMMAND(ID_EFFECT_HRASTER, &CGraphShowerView::OnEffectHRaster)
ON_COMMAND(ID_EFFECT_MOSAIC, &CGraphShowerView::OnEffectMosaic)
ON_UPDATE_COMMAND_UI(ID_EFFECT_NONE, &CGraphShowerView::OnUpdateEffectNone)
ON_UPDATE_COMMAND_UI(ID_EFFECT_RAND, &CGraphShowerView::OnUpdateEffectRand)
ON_UPDATE_COMMAND_UI(ID_EFFECT_SCANDOWN, &CGraphShowerView::OnUpdateEffectScan)
ON_UPDATE_COMMAND_UI(ID_EFFECT_VSCAN, &CGraphShowerView::OnUpdateEffectDscan)
ON_UPDATE_COMMAND_UI(ID_EFFECT_MOVERIGHT, &CGraphShowerView::OnUpdateEffectMove)
ON_UPDATE_COMMAND_UI(ID_EFFECT_VBLIND, &CGraphShowerView::OnUpdateEffectBlind)
ON_UPDATE_COMMAND_UI(ID_EFFECT_HRASTER, &CGraphShowerView::OnUpdateEffectRaster)
ON_UPDATE_COMMAND_UI(ID_EFFECT_MOSAIC, &CGraphShowerView::OnUpdateEffectMosaic)
ON_COMMAND(ID_EFFECT_HSMOVE, &CGraphShowerView::OnEffectHsmove)
ON_UPDATE_COMMAND_UI(ID_EFFECT_HSMOVE, &CGraphShowerView::OnUpdateEffectHsmove)
ON_COMMAND(ID_EFFECT_SBLIND, &CGraphShowerView::OnEffectSblind)
ON_UPDATE_COMMAND_UI(ID_EFFECT_SBLIND, &CGraphShowerView::OnUpdateEffectSblind)
ON_COMMAND(ID_EFFECT_VRASTER, &CGraphShowerView::OnEffectVraster)
ON_UPDATE_COMMAND_UI(ID_EFFECT_VRASTER, &CGraphShowerView::OnUpdateEffectVraster)
ON_COMMAND(ID_EFFECT_RAINDROP, &CGraphShowerView::OnEffectRaindrop)
ON_UPDATE_COMMAND_UI(ID_EFFECT_RAINDROP, &CGraphShowerView::OnUpdateEffectRaindrop)
ON_COMMAND(ID_FILE_OPEN, &CGraphShowerView::OnFileOpen)
END_MESSAGE_MAP()
// CGraphShowerView 构造/析构
CGraphShowerView::CGraphShowerView()
{
m_nShowType = ST_NORMAL;
m_bHeightOut = false;
m_bWidhtOut = false;
m_nXX = 0;
m_nYY = 0;
m_nXXMax = 0;
m_nYYMax = 0;
m_pBitmap = NULL;
m_bEffectDraw = false;
m_nEffectDisplayType = EDT_RAND;
m_nPos = -1;
}
CGraphShowerView::~CGraphShowerView()
{
::delete m_pBitmap;
}
/******************************************************************************
* 作用: 视图重绘函数
******************************************************************************/
void CGraphShowerView::OnDraw(CDC* pDC)
{
CGraphShowerDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
CRect rect;
GetClientRect(rect);
CDC memDC;
CBitmap MemBitmap;
// 设备描述表初始化
memDC.CreateCompatibleDC(NULL);
// 建立与屏幕显示兼容的内存显示设备
MemBitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());
// 选取空白位图
memDC.SelectObject(MemBitmap);
memDC.FillSolidRect(0, 0, rect.Width(), rect.Height(), RGB(255,255,255));
if (m_nPos >= 0)
ShowPicture(&memDC, *m_pBitmap, m_nShowType);
if (m_bEffectDraw && m_nEffectDisplayType != EDT_NONE)
{
int nHeight = rect.Height() - m_nShowPicHeight;
int nWidth = rect.Width() - m_nShowPicWidth;
if (nHeight < 0)
nHeight = 0;
if (nWidth < 0)
nWidth = 0;
pDC->FillSolidRect(0, 0, rect.Width(), rect.Height(), RGB(255,255,255));
EffectDisplay::s_nOffsetX = nWidth / 2;
EffectDisplay::s_nOffsetY = nHeight / 2;
EffectDisplay::s_nPicWidth = m_nShowPicWidth;
EffectDisplay::s_nPicHeight = m_nShowPicHeight;
EffectDisplay::s_nCDCWidth = rect.Width();
EffectDisplay::s_nCDCHeight = rect.Height();
EffectDisplayImage(pDC, &memDC);
m_bEffectDraw = false;
}
else
pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);
MemBitmap.DeleteObject();
memDC.DeleteDC();
}
/******************************************************************************
* 作用: 打开指定路径的文件
******************************************************************************/
void CGraphShowerView::OpenFile(const CString& strPath)
{
m_FilesNameAry.RemoveAll();
int nIndex = s
上一篇:
GraphShowerDoc.cpp
下一篇:
关于XX镇中小企业电子商务应用发展趋势的研究