要求在 Dialog 中显示一幅图像。
我在单文档中用 CImage 搞好的代码移植到 Dialog 的时候,居然没有反应。
这时我在单文档中的代码:
void CEx_ImageView::OnFileOpen()
{
HRESULT hResult;
Image1.Destroy();
hResult = Image1.Load("C:\\test.tif");
Invalidate();
}
void CEx_ImageView::OnDraw(CDC* pDC)
{
CEx_ImageDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!Image1.IsNull()) m_Image.Draw(pDC->m_hDC,0,0);
}这时我在 Dialog 中的代码:
void CDSP02Dlg::OnBnClickedOk()
{
HRESULT hResult;
Image1.Destroy();
hResult = Image1.Load("C:\\test.tif");
CDC* pDC = CDC::FromHandle(Image1.GetDC());
if (!Image1.IsNull()) {
Image1.Draw(pDC->m_hDC,0,0);
}
Invalidate();
}不知道为什么在 Dialog 中不能用?或者有什么别的办法可以在 Dialog 中显示图片的?
VC7 里面有个 Picture Control 的控件,不知道行不行?怎么用?好像我在 MSDN 里面查不到他?
我对 VC 还是刚入门阶段,希望各位能够说详细一些。谢谢了!
我在单文档中用 CImage 搞好的代码移植到 Dialog 的时候,居然没有反应。
这时我在单文档中的代码:
void CEx_ImageView::OnFileOpen()
{
HRESULT hResult;
Image1.Destroy();
hResult = Image1.Load("C:\\test.tif");
Invalidate();
}
void CEx_ImageView::OnDraw(CDC* pDC)
{
CEx_ImageDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!Image1.IsNull()) m_Image.Draw(pDC->m_hDC,0,0);
}这时我在 Dialog 中的代码:
void CDSP02Dlg::OnBnClickedOk()
{
HRESULT hResult;
Image1.Destroy();
hResult = Image1.Load("C:\\test.tif");
CDC* pDC = CDC::FromHandle(Image1.GetDC());
if (!Image1.IsNull()) {
Image1.Draw(pDC->m_hDC,0,0);
}
Invalidate();
}不知道为什么在 Dialog 中不能用?或者有什么别的办法可以在 Dialog 中显示图片的?
VC7 里面有个 Picture Control 的控件,不知道行不行?怎么用?好像我在 MSDN 里面查不到他?
我对 VC 还是刚入门阶段,希望各位能够说详细一些。谢谢了!
只好将图片导进来就可以直接显示了,不用代码.还有一个就是将图片设为对话框的背景:
Dlg.hCBrush m_brBk;//在public中定义 Dlg.cpp在OnInitialUpdate()中CBitmap bmp;bmp.LoadBitmap(IDB_BITMAP);m_brBk.CreatePatternBrush(&bmp);bmp.DeleteObject(); 在OnCtlColor()中添加if (pWnd == this){ return m_brBk;}
但是我在 MSDN 里面找不到相关的内容啊!
能不能说说怎么用?
http://it.563.cn/article/2002/2002-11-20/1662.html希望对你有所帮助!
我要显示 BMP,HDF,JPEG,PCX,TIFF,XWD 等格式的图片的。
在 vcforever(霓裳羽衣) 推荐的连接中说的 Kodak图象编辑控件
所要的那几个 DLL 和 OCX 我都没有啊!
我用的是 WinXP + VC7(VC.net里面的那个)
我所能接触的系统都没有啊!有没有一些直接一点的办法?其实我也很奇怪:为什么在 Document/View 中可以的代码,
在 Dialog 里面就不可以?
IPicture *pPicture;//声明OLE提供的图像对象
IStream *pStrm;//声明一个流对象
CFileStatus fstatus;
CFile file;
LONG cb;
if((file.Open(filename1,CFile::modeRead))&&(file.GetStatus(filename1,fstatus))&&((cb=fstatus.m_size)!=-1))
{
HGLOBAL hGlobal=GlobalAlloc(GMEM_MOVEABLE,cb);
LPVOID pvData=NULL;
CDC *pDC;
pDC=(this->GetActiveWindow())->GetDC();//得到活动视图的设备上下文
if(hGlobal!=NULL)
{
if((pvData=GlobalLock(hGlobal))!=NULL)
{
file.Read(pvData,cb);//将图像文件数据读入内存
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal,TRUE,&pStrm);//创建流对象
if(SUCCEEDED(OleLoadPicture(pStrm,fstatus.m_size,TRUE,IID_IPicture,
(LPVOID*)&pPicture))) //根据流对象pStrm初始化图像对象pPicture
{
OLE_XSIZE_HIMETRIC Width;
OLE_YSIZE_HIMETRIC Height;
pPicture->get_Width(&Width);
pPicture->get_Height(&Height);
//得到图像的宽、高尺寸,注意该尺寸的逻辑单位不是图像的像素
if(FAILED(pPicture->Render(*pDC,8,12,300,200,0,Height,Width,-Height,NULL)))
//在初始点(100,50)宽为200、高为150的矩形中显示图形
AfxMessageBox("Failed to render the picture");
pPicture->Release();
}
else
AfxMessageBox("Error loadimg picture from stream!");
}
}
}
else
AfxMessageBox("Can open image file!");
}
可以显示Bitmap, Gif, Jpeg的屏幕保护程序源代码,使用
现在正在研究中 ………