建立自己的类库

shushenlw 2009-05-25 03:36:11
刚接触VC,老师让自己做一个DIB类库,说是处理位图的时候要用,不知道如何建立,希望各位帮助,谢谢。
...全文
130 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
IONPhantom 2009-06-04
  • 打赏
  • 举报
回复
楼上的观点...服了,靠抄就能会吗?抄根本就是不走脑子的活动
Eleven 2009-06-04
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 lambochan 的回复:]
你不抄难道一开始你就会自己编?
估计99%的都是从抄"hello world"开始的..hohoho..
只不过现在进化了些..抄...DIB类.
[/Quote]

说的好听一点那叫借鉴一下
lambochan 2009-06-04
  • 打赏
  • 举报
回复
你不抄难道一开始你就会自己编?
估计99%的都是从抄"hello world"开始的..hohoho..
只不过现在进化了些..抄...DIB类.
lambochan 2009-06-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 P_hantom 的回复:]
楼上的观点...服了,靠抄就能会吗?抄根本就是不走脑子的活动
[/Quote]

晕,让你抄1百1千次BITMAPINFOHEADER..你猜你会不会烂熟里面的所有值域.
你抄都不抄听老师讲完就算,你猜你会不会知道里面是什么东西?
注意这个"抄"字..不是"粘贴"..

所以,应该体谅老师的苦衷..
当然,抄都不抄直接down个下来交差那就不在偶说之内了..
lambochan 2009-06-03
  • 打赏
  • 举报
回复
老师做法是正确的,明知你们怎么也写不出(也许连老师自己都写不出),实质上就是叫你们去抄,好过你们连抄都懒得抄..
shushenlw 2009-06-03
  • 打赏
  • 举报
回复
呵呵,看来是的。
IONPhantom 2009-05-30
  • 打赏
  • 举报
回复
刚接触VC就让自己写GDI类库?老师是不是太2了!
BruceLin2008 2009-05-29
  • 打赏
  • 举报
回复
我有完整的代码,要的话给你发一份。iamhycljc@163.com
sld009 2009-05-29
  • 打赏
  • 举报
回复
this->FileName=FileName;
if (Bitmap.bmBits!=NULL)
{

delete[]Bitmap.bmBits;
}
Bitmap.bmBits=NULL;
if (pPixels)
{
delete[]pPixels;
}
pPixels=NULL;
Open(FileName,CFile::modeRead,NULL);
ULONGLONG FileStart=GetPosition();
Read(&FileHeader,sizeof(BITMAPFILEHEADER));
Read(&InfoHeader,sizeof(BITMAPINFOHEADER));
nPixels=InfoHeader.biSizeImage;
Bitmap.bmBits=new BYTE[nPixels];
if (NULL==Bitmap.bmBits)
{
return false;
}
pPixels=new BYTE[nPixels];
if (NULL==pPixels)
{
return false;
}
Seek(FileStart+FileHeader.bfOffBits,CFile::begin);
Read(Bitmap.bmBits,nPixels);
memcpy(pPixels,Bitmap.bmBits,nPixels);
Bitmap.bmWidth=InfoHeader.biWidth;
Bitmap.bmHeight=InfoHeader.biHeight;
Bitmap.bmWidthBytes=InfoHeader.biBitCount/8*Bitmap.bmWidth;
Close();
return true;


打开文件用的 我们上课就用这个
laoma_hbu 2009-05-27
  • 打赏
  • 举报
回复
《Visual C++.NET图像处理编程》作者: 陆宗骐,金登男;出版社:清华大学
书不错,排版太差了,看着不舒服。
shushenlw 2009-05-26
  • 打赏
  • 举报
回复
多谢,不过向世明的那本书我有,但是我照着做出来后开始->打开,然后找一个位图,结果位图不能显示啊。
99 2009-05-25
  • 打赏
  • 举报
回复
faint
不能输入了
.....QQ43248007,给你发一个吧.哈哈
99 2009-05-25
  • 打赏
  • 举报
回复
/////////////////////////////////////////////////////////////////////////////////
//
// Dib.h: interface for the CDib class.
//
////////////////////////////////////////////////////////////////////////////////
// 版权所有(2002)
// Copyright(2002)
// 编写者: 向世明
// Author: Xiang Shiming


#ifndef _CDIB_H
#define _CDIB_H

class CDib : public CObject
{
DECLARE_DYNAMIC(CDib)
protected:

BOOL m_bValid; //是否有效
RGBQUAD* m_pRGBQuad; //RGBQUAD 表项
BYTE* m_pDibData; //位图像素数据
LONG m_nWidth; //宽度
LONG m_nHeight; //高度
BYTE m_nBitCount; //每个像素占有的位数
UINT m_nTotalColors; //颜色总数
char* m_pszFileName;
BITMAPFILEHEADER* m_pBitmapFileHeader;
BITMAPINFOHEADER* m_pBitmapInfoHeader;
BITMAPINFO* m_pBitmapInfo;
HGLOBAL m_hDIB;


public:

CDib();
CDib(const char* pszDibFileName);
~CDib();

int Draw(HDC hdc, int XDest, int YDest, int nDestWidth, int nDestHeight, int XSrc, int YSrc, int nSrcWidth, int nSrcHeight, UINT iUsage, DWORD dwRop);


DWORD GetDdbData32(LPBYTE lpbyDdb32);
DWORD GetDdbData24(LPBYTE lpbyDdb24);

DWORD GetDibWidthBytes(int nWidth, BYTE byBitCount);
BYTE GetBitCount() const;
DWORD GetSize();
LONG GetWidth() const;
LONG GetHeight() const;
UINT GetColorNumber() const;
char* GetFileName() const;
BOOL IsValid() const ;
RGBQUAD* GetRGBQuad() const ;
BYTE* GetDibData() const ;
BITMAPINFO* GetBmpInfo() const;
DWORD GetGrayData(LPBYTE lpdata);

public:
void ClearMemory();
HPALETTE CreateBitmapPalette();

#ifdef _DEBUG
virtual void Dump(CDumpContext& dc) const;
virtual void AssertValid() const;
#endif

protected:


void LoadFile(const char* pszDibFileName);
private:
void Init();
};

#endif

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧