三九宝宝网宝宝绘画儿童画

怎么在C中实现图片的打印预览

12月27日 编辑 39baobao.com

[U盘图片没有预览是怎么回事]U盘里的照片读不出来,首先确定的是U盘是否有别的文件也存在,而且别的文件是不是可以正常用电脑读取。如果仅仅是无法识别,那么你把U盘插别的电脑上,看看是不是能够正常的识别到...+阅读

thumbctl 控件,你试一下。

写到OnPrint中,第一个参数直接用OnPrint中的pDC,第二个参数是图片路径,

第三,四个参数是图片的左上角座标,第五,六个参数是你显示时要求的图片的大小.

#define HIMETRIC_INCH 2540

LPPICTURE gpPicture;

ShowPicture(CDC* pDC,CString m_strBRoute,int x,int y,int width,int height)

{

HANDLE hFile = CreateFile(m_strBRoute, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);

_ASSERTE(INVALID_HANDLE_VALUE != hFile);

// 取得文件大小

DWORD dwFileSize = GetFileSize(hFile, NULL);

_ASSERTE(-1 != dwFileSize);

LPVOID pvData = NULL;

//根据文件大小分配内存

HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);

_ASSERTE(NULL != hGlobal);

pvData = GlobalLock(hGlobal);

_ASSERTE(NULL != pvData);

DWORD dwBytesRead = 0;

//读取文件并存入全局内存

BOOL bRead = ReadFile(hFile, pvData, dwFileSize, &dwBytesRead, NULL);

_ASSERTE(FALSE != bRead);

GlobalUnlock(hGlobal);

CloseHandle(hFile);

LPSTREAM pstm = NULL;

// 通过全局内存创建 IStream* 的指针

HRESULT hr = CreateStreamOnHGlobal(hGlobal, TRUE, &pstm);

_ASSERTE(SUCCEEDED(hr) & pstm);

//通过图形文件创建IPicture 对象

if (gpPicture)

gpPicture-> Release();

hr = OleLoadPicture(pstm, dwFileSize, FALSE, IID_IPicture, (LPVOID *)&gpPicture);

_ASSERTE(SUCCEEDED(hr) & gpPicture);

pstm-> Release();

HDC hdc;

hdc=pDC-> GetSafeHdc();

if (gpPicture)

{

// 取得图片的宽和高

long hmWidth;

long hmHeight;

gpPicture-> get_Width(&hmWidth);

gpPicture-> get_Height(&hmHeight);

//宽高转换为象素

int nWidth = MulDiv(hmWidth, GetDeviceCaps(hdc, LOGPIXELSX), HIMETRIC_INCH);

int nHeight = MulDiv(hmHeight, GetDeviceCaps(hdc, LOGPIXELSY), HIMETRIC_INCH);

RECT rc;

GetClientRect(&rc);/*取得客户区*/

gpPicture-> Render(hdc, x,y, (int)height*hmWidth/hmHeight,height, 0, hmHeight, hmWidth, -hmHeight, &rc);

/*显示图片*/

}

}

以下为关联文档:

U盘的图片无法预览导致这种现象的原因可能是你的U盘有坏块或是扩容的U盘,你的U盘可能是山寨扩容升级的,甚至用的闪存芯片可能是黑片,如果想正常使用,就必须用你U盘主控型号对应的U盘量产工具对U盘...

推荐阅读
图文推荐