谁有显示多种图像文件(GIF,JPG,PNG,PSD....)的免费控件或者源代码?
hizg@263.net
问题点数:20、回复次数:8Top
1 楼Anon(无名)回复于 2002-04-06 16:05:34 得分 10
只支持静态GIF,JPEG、WMF、ICO、CUR。
void DrawPIC(HDC hDC,LPCTSTR sFile,int x,int y,int cx,int cy)
{
IPicture *pPic;
IStream *pStm;
CFileStatus fstatus;
CFile file;
LONG cb;
if(file.Open(sFile,CFile::modeRead) &&
file.GetStatus(sFile,fstatus) &&
((cb = fstatus.m_size) != -1))
{
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);
LPVOID pvData = NULL;
if(hGlobal != NULL)
{
if((pvData = GlobalLock(hGlobal)) != NULL)
{
file.ReadHuge(pvData, cb);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE,&pStm);
if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,
TRUE,IID_IPicture,(LPVOID* )&pPic)))
{
OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight;
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
int fX,fY;
if((cx==-1)||(cy==-1))
{
fX = MulDiv(hmWidth, GetDeviceCaps(hDC,LOGPIXELSX), 2540);
fY = MulDiv(hmHeight, GetDeviceCaps(hDC,LOGPIXELSX), 2540);
}
else
{
fX = cx;fY = cy;
}
if(FAILED(pPic->Render(hDC,x,y,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL)))
AfxMessageBox("Failed To Render The picture!");
pPic->Release();
}
else
AfxMessageBox("Error Loading Picture From Stream!");
}
}
}
else
AfxMessageBox("Can't Open Image File!");
}Top
2 楼jiangsheng(蒋晟.Net[MVP])回复于 2002-04-06 16:15:48 得分 0
GDI+Top
3 楼zhzhd(东东)回复于 2002-04-06 16:20:37 得分 0
为什么不采用自带浏览器控件Top
4 楼jiangsheng(蒋晟.Net[MVP])回复于 2002-04-06 16:25:35 得分 0
PSD是Adobe的,不能用IETop
5 楼oldmonsterman(飞龙在天)回复于 2002-04-06 19:38:35 得分 5
www.vchelp.net
www.vckbase.comTop
6 楼attackboy(我像是飘在城市的一片尘埃)回复于 2002-04-06 20:22:30 得分 5
普通的格式,你可以参考IPicture接口。如第一个回答的人写的代码。
在codeproject.com上也有。如果要多一点,你就必须用一些专门的Dll来完成。也可以在那个站点找到。当然使用GDI+也是一个非常好的选择。Top
7 楼hizg2008()回复于 2002-04-08 10:15:43 得分 0
GDI+是不是.net的技术??我用vc6.0
Top
8 楼jiangsheng(蒋晟.Net[MVP])回复于 2002-04-08 11:23:32 得分 0
要下新版本的SDK头文件Top




