2024年4月28日发(作者:)
最近项目中要用到图片显示,有现成的不过用起来感觉不是很好.主要原因:(一)都是读取的本地文
件 (二)显示的效率不是很好 (三)不符合项目要求.于是上codeproject上找了一个类CPictureCtrl,使
用很方便,但是vc6下不支持,并且不能根据图片大小调整显示大小,于是对其进行了改进.
1.源代码
CPictureCtrl.h文件:
///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////
// PictureCtrl.h
//
// Author: Tobias Eiseler
//
// E-Mail: r@
//
// Function: A MFC Picture Control to display
// an image on a Dialog, etc.
///////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
#pragma once
#include "afxwin.h"
#ifndef ULONG_PTR
#define ULONG_PTR unsigned long *
#endif
#include "GdiPlus.h"
using namespace Gdiplus;
#pragma comment(lib,"") //以上部分是gdi说明
class CPictureCtrl :
public CStatic
{
public:
//Constructor
CPictureCtrl(void);
//Destructor
~CPictureCtrl(void);
public:
//Loads an image from a file
BOOL LoadFromFile(CString &szFilePath);
//Loads an image from an IStream interface
BOOL LoadFromStream(IStream* piStream);
//Loads an image from a byte stream;
BOOL LoadFromStream(BYTE* pData, size_t nSize);
//Loads an image from a Resource
// BOOL LoadFromResource(HMODULE hModule, LPCTSTR lpName, LPCTSTR lpType);
//Overload - Single load function
BOOL Load(CString &szFilePath,int nWidth = 0,int nHeight = 0);
BOOL Load(IStream* piStream,int nWidth = 0,int nHeight = 0);
BOOL Load(BYTE* pData, size_t nSize,int nWidth = 0,int nHeight = 0);
// BOOL Load(HMODULE hModule, LPCTSTR lpName, LPCTSTR lpType);
//Frees the image data
void FreeData();
protected:
virtual void PreSubclassWindow();
//Draws the Control
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
virtual BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP()
private:
- 2 -


发布评论