📄 image.h
字号:
// Image.h: interface for the CImage class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_IMAGE_H__145D9870_D5C8_4FBF_8E23_11380865ED62__INCLUDED_)
#define AFX_IMAGE_H__145D9870_D5C8_4FBF_8E23_11380865ED62__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
typedef DWORD COLOR;
//定义三个基本颜色(红,绿,蓝)
#define COLOR_RED 0x00FF0000
#define COLOR_GREEN 0x0000FF00
#define COLOR_BLUE 0x000000FF
#define COLOR_WHITE 0x00FFFFFF //定义白色
#define COLOR_BLACK 0x00000000 //定义黑色
// 关于RGB颜色的系统宏的重新定义
#undef RGB
#undef GetRValue
#undef GetGValue
#undef GetBValue
#define RGB(r,g,b) ((((r)<<16)&COLOR_RED) | (((g)<<8)&COLOR_GREEN) | ((b)&COLOR_BLUE))
#define GetRValue(color) (BYTE)(((color) & COLOR_RED)>>16)
#define GetGValue(color) (BYTE)(((color) & COLOR_GREEN)>>8)
#define GetBValue(color) (BYTE)((color) & COLOR_BLUE)
#define IMAGE_HEADER_MARKER ((WORD)('M')<<8 | 'B') /* 位图标记 */
#define RECTWIDTH(lpRc) ((lpRc)->right - (lpRc)->left)
#define RECTHEIGHT(lpRc) ((lpRc)->bottom - (lpRc)->top)
#define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4) /* 行32位对齐 */
#define pi (double)3.14159265359
typedef struct
{
double re;
double im;
}COMPLEX;
class CImage : public CObject
{
public:
void OnClose();
void OnOpen();
void PengZhang();
void IFFT(COMPLEX *FD,COMPLEX *TD,int power);
void FFT(COMPLEX *TD,COMPLEX *FD,int power);
COMPLEX ComplexMul(COMPLEX c1,COMPLEX c2);
COMPLEX ComplexSub(COMPLEX c1,COMPLEX c2);
COMPLEX ComplexAdd(COMPLEX c1,COMPLEX c2);
void BianYanTiQu();
void FuShi();
void HuiDuHua();
void ErZhi(int value);
void Four2eight();
/*-------------构造函数和构析函数----------------------*/
CImage();
virtual ~CImage();
void Free();
/*-------------读写操作函数----------------------------*/
BOOL LoadFromFile(LPCTSTR lpszFileName);
BOOL Save(LPCTSTR lpszFileName) const;
CImage& operator =(const CImage &dibSrc);
/*-------------基本操作函数----------------------------*/
COLOR GetPixelColor(LONG x,LONG y) const;
void SetPixelColor(LONG x,LONG y,const COLOR color);
BYTE GetRedValue(LONG x,LONG y) const;
BYTE GetGreenValue(LONG x,LONG y) const;
BYTE GetBlueValue(LONG x,LONG y) const;
/*-------------显示操作函数---------------------------*/
BOOL ShowImage(HDC,LONG x,LONG y);//(x,y)为目标矩形的左上角坐标
/*-------------属性操作函数-----------------------------*/
BOOL IsValid() const { return m_imageheader != NULL;}
LONG GetWidth()const { return (IsValid()) ? m_imageheader->bmiHeader.biWidth : 0;}
LONG GetHeight()const{ return (IsValid()) ? m_imageheader->bmiHeader.biHeight : 0;}
RECT GetRect()const;
WORD NumColors()const;
BYTE BitsPerPixel()const{ return (IsValid()) ? m_imageheader->bmiHeader.biBitCount:0;}
//BitsPerPixel这个函数待定,有一定的问题。
private:
void FormatImage() ; //用零来初始化图象
LPBITMAPINFO m_imageheader; //图象信息文件头指针(图象有三部分,一,图象头文件;二,图象信息文件头;三,色彩信息)
LPBYTE m_image; //图象色彩信息存放的首地址
LONG m_bytesperline; //图象每行的字节数
BYTE m_bytesperpixel; //每象素所占用的字节数
};
#endif // !defined(AFX_IMAGE_H__145D9870_D5C8_4FBF_8E23_11380865ED62__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -