Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
Dynsplitview2.cpp
Package: tuxiang.rar [view]
Upload User: szkelitina
Upload Date: 2022-05-21
Package Size: 6797k
Code Size: 5k
Category:
Special Effects
Development Platform:
Visual C++
- // DynSplitView2.cpp : implementation file
- //
- #include "stdafx.h"
- #include "DSplit.h"
- #include "DynSplitView2.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CDynSplitView2
- IMPLEMENT_DYNCREATE(CDynSplitView2, CView)
- CDynSplitView2::CDynSplitView2()
- {
- state2=0;
- }
- /*初始化图像数据*/
- void CDynSplitView2::clearmem()
- {
- CDSplitDoc* pDoc = GetDocument();
- ASSERT_VALID(pDoc);
- pDoc->statedoc=0;
- state2=1;
- CDibNew1=&pDoc->CDibNew;
- CDib1=&pDoc->CDib;
- long int size=CDib1->GetHeight()*CDib1->GetDibWidthBytes();
- memcpy(CDibNew1->m_pData,CDib1->m_pData,size);
- }
- CPalette * CDynSplitView2::CreateBitmapPalette(WeiFenDib * pBitmap)
- {
- struct
- {
- WORD Version;
- WORD NumberOfEntries;
- PALETTEENTRY aEntries[256];
- } palette = { 0x300, 256 };
- LPRGBQUAD pRGBTable = pBitmap->GetRGB();
- UINT numberOfColors = pBitmap->GetNumberOfColors();
- for(UINT x=0; x<numberOfColors; ++x)
- {
- palette.aEntries[x].peRed =
- pRGBTable[x].rgbRed;
- palette.aEntries[x].peGreen =
- pRGBTable[x].rgbGreen;
- palette.aEntries[x].peBlue =
- pRGBTable[x].rgbBlue;
- palette.aEntries[x].peFlags = 0;
- }
- hPalette.CreatePalette((LPLOGPALETTE)&palette);
- return &hPalette;
- }
- CDynSplitView2::~CDynSplitView2()
- {
- }
- CDSplitDoc* CDynSplitView2::GetDocument() // non-debug version is inline
- {
- ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDSplitDoc)));
- return (CDSplitDoc*)m_pDocument;
- }
- BEGIN_MESSAGE_MAP(CDynSplitView2, CView)
- //{{AFX_MSG_MAP(CDynSplitView2)
- ON_WM_ERASEBKGND()
- ON_COMMAND(ID_FILESAVE, OnFilesave)
- ON_COMMAND(ID_HengXiang, OnHengXiang)
- ON_COMMAND(ID_ZongXiang, OnZongXiang)
- ON_COMMAND(ID_ShuangXiang, OnShuangXiang)
- ON_COMMAND(ID_ErCi1, OnErCi1)
- ON_COMMAND(ID_ErCi2, OnErCi2)
- ON_COMMAND(ID_ErCi3, OnErCi3)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CDynSplitView2 drawing
- void CDynSplitView2::OnDraw(CDC* pDC)
- {
- CDSplitDoc* pDoc = GetDocument();
- ASSERT_VALID(pDoc);
- if(!pDoc ->statedoc&&state2==1)
- {
- BYTE* pBitmapData = CDibNew1->GetData();
- LPBITMAPINFO pBitmapInfo = CDibNew1->GetInfo();
- int bitmapHeight = CDibNew1->GetHeight();
- int bitmapWidth = CDibNew1->GetWidth();
- if (CDibNew1->GetRGB()) // Has a color table
- {
- CPalette * hPalette=CreateBitmapPalette(CDibNew1);
- CPalette * hOldPalette =
- pDC->SelectPalette(hPalette, true);
- pDC->RealizePalette();
- ::StretchDIBits(pDC->GetSafeHdc(),0, 0, bitmapWidth, bitmapHeight,
- 0, 0, bitmapWidth, bitmapHeight,
- pBitmapData, pBitmapInfo,
- DIB_RGB_COLORS, SRCCOPY);
- pDC->SelectPalette(hOldPalette, true);
- ::DeleteObject(hPalette);
- }
- else
- {
- StretchDIBits(pDC->GetSafeHdc(),
- 0, 0, bitmapWidth, bitmapHeight,
- 0, 0, bitmapWidth, bitmapHeight,
- pBitmapData, pBitmapInfo,
- DIB_RGB_COLORS, SRCCOPY);
- }
- }
- }
- /////////////////////////////////////////////////////////////////////////////
- // CDynSplitView2 diagnostics
- #ifdef _DEBUG
- void CDynSplitView2::AssertValid() const
- {
- CView::AssertValid();
- }
- void CDynSplitView2::Dump(CDumpContext& dc) const
- {
- CView::Dump(dc);
- }
- #endif //_DEBUG
- /////////////////////////////////////////////////////////////////////////////
- // CDynSplitView2 message handlers
- BOOL CDynSplitView2::OnEraseBkgnd(CDC* pDC)
- {
- CRect rect;
- GetClientRect(&rect);
- pDC->FillSolidRect(&rect,::GetSysColor(COLOR_WINDOW));
- return TRUE;
- }
- void CDynSplitView2::OnFilesave()
- {
- CFileDialog dlg(FALSE,_T("BMP"),_T("*.BMP"),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("位图文件(*.BMP)|*.BMP|"));
- if(IDOK==dlg.DoModal())
- CString filename;
- filename.Format ("%s",dlg.GetPathName() );
- CDibNew1->SaveFile(filename);
- state2=1;
- Invalidate();
- }
- /*横向微分消息映射*/
- void CDynSplitView2::OnHengXiang()
- {
- clearmem();
- CDibNew1->HengXiang(); //对图像进行横向微分
- Invalidate();
- }
- /*纵向微分消息映射*/
- void CDynSplitView2::OnZongXiang()
- {
- clearmem();
- CDibNew1->ZongXiang();//对图像进行纵向微分
- Invalidate();
- }
- /*双向一次微分消息映射*/
- void CDynSplitView2::OnShuangXiang()
- {
- clearmem();
- CDibNew1->ShuangXiang(); //对图像进行双向一次微分
- Invalidate();
- }
- /*二次微分1消息映射*/
- void CDynSplitView2::OnErCi1()
- {
- clearmem();
- CDibNew1->ErCi1(); //对图像进行二次微分
- Invalidate();
- }
- /*二次微分2消息映射*/
- void CDynSplitView2::OnErCi2()
- {
- clearmem();
- CDibNew1->ErCi2(); //对图像进行二次微分
- Invalidate();
- }
- /*二次微分3消息映射*/
- void CDynSplitView2::OnErCi3()
- {
- clearmem();
- CDibNew1->ErCi3(); //对图像进行二次微分
- Invalidate();
- }