永发信息网

C++怎么把图片数据写入内存,有例子的发hp_hear@一六三点com

答案:3  悬赏:50  手机版
解决时间 2021-01-21 04:24
C++怎么把图片数据写入内存,有例子的发hp_hear@一六三点com
最佳答案
我以前写的一个文件-》内存-》数据库
数据库-》内存-》控件的代码,希望对你有帮助。
读入内存的varBLOB
void CMyBlobData::GetBlobFromFile(_variant_t& varBLOB,CString fileName)
{
_StreamPtr pStm;
pStm.CreateInstance("ADODB.Stream");
variant_t varOptional(DISP_E_PARAMNOTFOUND,VT_ERROR);
pStm->PutType(adTypeBinary);
pStm->Open( varOptional,adModeUnknown, adOpenStreamUnspecified, _bstr_t(), _bstr_t());

pStm->LoadFromFile(_bstr_t(fileName));//读入文件
varBLOB=pStm->Read(adReadAll);
pStm->Close();
}

// 在指定区域显示照片
void CDyInput::ShowPic(CDC* pDC, CRect rect)
{
if(m_varBLOB.vt==VT_EMPTY)
{
pDC->FillSolidRect(rect.left ,rect.top ,rect.Width(),rect.Height(), GetSysColor(COLOR_3DFACE));
return;
}

HGLOBAL hGlobal=GlobalAlloc(GMEM_MOVEABLE,m_varBlobSize);
LPVOID pvData=NULL;
IStream* ps;
if(hGlobal!=NULL)
{
if((pvData = GlobalLock(hGlobal)) != NULL) //锁定内存分配块
{
char* pBuf=NULL;
SafeArrayAccessData(m_varBLOB.parray,(void **)&pBuf);
memcpy(pvData,pBuf,m_varBlobSize); //复制varBLOB中的数据到缓冲区
SafeArrayUnaccessData (m_varBLOB.parray);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &ps);
}
}

IPicture* pPic;//装入图形数据
if(SUCCEEDED (OleLoadPicture(ps,m_varBlobSize,TRUE,IID_IPicture,(LPVOID*) &pPic)))
{
OLE_XSIZE_HIMETRIC hmWidth;//图片真实宽度
OLE_YSIZE_HIMETRIC hmHeight;//图片真实高度
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
if(FAILED(pPic->Render(*pDC,rect.left,rect.top,rect.right-rect.left,rect.bottom-rect.top,0,hmHeight,hmWidth,-hmHeight,&rect)))
AfxMessageBox(_T("图像绘制失败!"));
pPic->Release();
}
}

显示图片
void CDyInput::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
if(nIDCtl==IDC_PIC_ZHAOPIAN && m_varBlobSize>0)
{
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);//得到DC
CRect rect=lpDrawItemStruct->rcItem;//得到显示的区域
ShowPic(&dc,rect);
dc.Detach();
}
else
CDialogEx::OnDrawItem(nIDCtl, lpDrawItemStruct);
}追问谢谢你的回复,有具体的代码吗?直接复制你的代码的话会有很多错误追答父类也是用我的?要改成你自己的追问我只有一个类,提示很多未定义的错
全部回答
把图片显示出来
C++本身不提供吧
系统有加载图片和接口,你可以调用这些接口加载图片
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
若两个数的和是-25,其中一个数比5的相反数小
大灯有改装的么
我被3m骗35000元报案拿的回来的吧
如图所示,甲、乙两个电路都是由一个灵敏电流
用观察和端详一造句
罗技G533耳机的蓝牙适配器通用吗
单选题Theteacherpointed________theboy’sm
C1能不能开清障车
现在学习什么技能最有前景??
经典推箱子53和56怎么过关?求解,57关是死关
因式分解x²-x+14答案是什么?
佩戴青料金镶玉的大吊坠对身体有辐射吗?
洒仙桥到长阳坐地铁
小鱼儿钻出水面请把这句话翻译成英文
13万8千元一年后利息有3199元,利率是多少
推荐资讯
为什么趣多多配料里面有代可可脂,营养成分表
快乐大歌神王思懿刚刚唱的二首歌名
书长2厘米5毫米化成整数该怎么写
326x35怎么算的过程
多年疤痕可以去除掉吗
分手后,总沉浸在自我补偿的满足中,怎么走出
高中的时候,如果老师布置座位的时候,男女混
股票k线一根阴针什么意思
红色的大象有没有什么象征意义?
运气究竟占了多大成分
上天造了项羽,还要造韩信
14分之11乘10分之15等于多少分数
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?