📄 dib.h
字号:
// Dib.h: interface for the CDib class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_DIB_H__9529A10B_4D30_11D5_A048_00E04C3F26B2__INCLUDED_)
#define AFX_DIB_H__9529A10B_4D30_11D5_A048_00E04C3F26B2__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "DibApiHead.h"
#include "DibApi.h"
#include "ImageProc.h"
class AFX_EXT_CLASS CDib : public CObject
{
DECLARE_DYNCREATE(CDib)
// DECLARE_SERIAL(CDib)
public:
HDIB m_hDib;
HBITMAP m_hBitmap; //Handle of DIBSection
CPalette* m_pPalette;
CBitmap* m_pBitmap;
//private member data
private:
CDC* m_pMemDC;
CBitmap* m_pBitmapTmp;
CPalette* m_pPaletteTmp;
HDIB m_hDibTmp;
private:
public:
BOOL Undo();
//public member function
public:
CDib();
//基于系统调色板创建缺省的空CDib对象
BOOL Create(DWORD dwWidth, DWORD dwHeight);
//创建缺省的空CDib对象
BOOL Create(DWORD dwWidth, DWORD dwHeight, WORD wBitCount);
//从DIB数据块创建缺省的CDib对象
BOOL Create(LPBYTE lpDIB);
//从DIB数据块创建CDib对象
BOOL Create(LPBYTE lpDIB, WORD wBitCount);
//从DIBSECTION创建缺省的CDib对象
BOOL Create(HBITMAP hBitmap);
//从DDB创建缺省的CDib对象
BOOL Create(HBITMAP hBitmap, WORD wBitCount);
//从DDB和指定的调色板创建缺省的CDib对象
BOOL Create(HBITMAP hBitmap, HPALETTE hPalette);
//从DDB和指定的调色板创建CDib对象
BOOL Create(HBITMAP hBitmap, HPALETTE hPalette, WORD wBitCount);
//从屏幕的指定区域显示创建缺省的CDib对象
BOOL Create(CRect rcScreen);
//从指定窗口显示创建缺省的CDib对象
BOOL Create(HWND hWnd, WORD fPrintArea);
//从指定窗口客户区的指定区域显示创建缺省的CDib对象
BOOL Create(HWND hWnd, CRect rcClientArea);
//Attach handle
BOOL Attach(HDIB hDib); //将指定的DIB句柄与CDib对象联系起来
//load / save
//从指定的资源号创建缺省的CDib对象
BOOL Load(UINT uIDs, LPCTSTR lpszDibType);
//从指定的资源名创建缺省的CDib对象
BOOL Load(LPCTSTR lpszDibRes, LPCTSTR lpszDibType);
//从指定的DIB文件创建缺省的CDib对象
BOOL Load(LPCTSTR lpszDibFile);
BOOL Save(LPCTSTR lpszDibFile);
BOOL Read(CFile* pFile);
BOOL Write(CFile* pFile);
//deconstructor
virtual ~CDib();
//Destroy
void Destroy();
HDIB Detach();
//overlaying serialize
virtual void Serialize(CArchive& ar);
//display
BOOL Display(CDC* pDC, int xDest, int yDest, int nWidthDest,
int nHeightDest, int xSrc, int ySrc, DWORD dwRop = SRCCOPY);
BOOL Display(CDC* pDC, int xDest, int yDest, int nWidthDest,
int nHeightDest, int xSrc, int ySrc, int nWidthSrc,
int nHeightSrc, DWORD dwRop = SRCCOPY);
BOOL Display(CDC* pDC, int x, int y, DWORD dwRop = SRCCOPY);
BOOL Display(CDC* pDC, CRect rcDest, CRect rcSrc, DWORD dwRop = SRCCOPY);
BOOL DisplayPalette(CDC* pDC, CRect rc);
BOOL DisplayTransparent(CDC* pDC, CDib* pMaskDib); // hDib 为1bit位图
//DC for modify DIB
CDC* BeginPaint(CDC* pDC);
void EndPaint();
//DDBand palette
BOOL BuildBitmap();
BOOL BuildPalette();
//attributes
BOOL IsEmpty();
DWORD GetCompression();
WORD GetBitCount();
LONG GetWidth();
LONG GetHeight();
LONG GetWidthBytes();
WORD GetColorNumber();
WORD GetPaletteSize();
CBitmap* GetBitmap();
CPalette* GetPalette();
HANDLE GetHandle();
LPBYTE GetBitsPtr();
COLORREF GetPixel(LONG x,LONG y);
LONG GetPixelOffset(LONG x, LONG y);
BOOL ConvertFormat(WORD wBitCount);
//operator
COLORREF operator[](LONG y);
//Bitmap transform
HDIB Copy(CRect& rect);
HDIB Cut(CRect& rect);
BOOL Merge(HDIB hDib, CPoint ptTopLeft);
BOOL Crop(CRect& rect);
BOOL Rotate90();
BOOL Rotate180();
BOOL Rotate270();
BOOL FlipHorz();
BOOL FlipVert();
BOOL Zoom(double fRatioX, double fRatioY);
BOOL ChangeImageSize(int nWidth, int nHeight);
BOOL ChangeCanvasSize(int nWidth, int nHeight, int nPosition);
//Color Transform
BOOL IsRequireDither(CDC* pDC);
BOOL DitherDisplay(CDC* pDC, CRect rcRect, CRect rcSrc,
DWORD dwRop = SRCCOPY);
BOOL ColorQuantize(int nColors);
BOOL ChangeToGrayScale(int nMethed = MAXIMUM_GRAY,
double fRedWeight = 0.30,
double fGreenWeight = 0.59,
double fBlueWeight = 0.11);
BOOL ChangeToGrayDib(int nMethed = MEAN_GRAY,
double fRedWeight = 0.30,
double fGreenWeight = 0.59,
double fBlueWeight = 0.11);
BOOL AdjustColor(int nColorModel, int v1, int v2, int v3);
BOOL AdjustBrightness(int v);
BOOL AdjustConcrast(int v);
void DibClear(); //将DIB中所有象素值清零
//调色板操作
BOOL GetPalette(int i, RGBQUAD& rgb);
BOOL GetPalette(int i, RGBQUAD* rgb);
BOOL SetPalette(int i, RGBQUAD& rgb);
BOOL SetPalette(int i, RGBQUAD* rgb);
BOOL SetPalette(LPLOGPALETTE lpPal);
BOOL SetPalette(HPALETTE hLogPal);
int Normalize();
//数组操作
BOOL GetImage(CRect& rect, IMAGE& buf); //仅对灰度图
BOOL PutImage(CRect& rect, IMAGE& buf);
BOOL GetImage(CRect& rect, IMAGE& r, IMAGE& g, IMAGE& b); //仅对24位真彩色图象
BOOL PutImage(CRect& rect, IMAGE& r, IMAGE& g, IMAGE& b);
// BOOL GetImage(CRect& rect, COLORIMAGE& ci);
// BOOL PutImage(CRect& rect, COLORIMAGE& ci);
//private member function
private:
BOOL UpdateInternal();
};
#endif // !defined(AFX_DIB_H__9529A10B_4D30_11D5_A048_00E04C3F26B2__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -