`
kanwoerzi
  • 浏览: 1648101 次
文章分类
社区版块
存档分类
最新评论

图像输出

 
阅读更多

图像输出
利用CDC类的位图图函数输出位图到设备上下文
BOOL BitBlt(int x,int y,int width,int height,CDC *pSrcDC,int xSrc,int ySrc,DWORD dwRop)
x,y表示目标区域左上角坐标
widthheigth 表示位图分大小
pSrcDC 表示源设备上下文指针
xSrc,ySrc表示源设备上下文起点坐标,函数从该起点复制位图到目标设备
dwRop 表示光栅操作代码

BOOL StretchBlt(int x,int y,int width,int height,CDC *pSrcDC,int xSrc.int ySrc,int Srcwidth,int Srcheight,DWORD dwRop)
nSrcwidth nsrcheight表示赋值的位图高度

在OnPaint()函数中
else
{
CDC *pDC=GetDC();
CDC memDC;//定义一个设备上下文
memDC.CreateCompatibleDC(pDC); //创建兼容的设备上下文
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1); //载入位图
memDC.SelectObject(&bmp);
pDC->BitBlt(30,20,230,240,&memDC,1,1,SRCCOPY); //绘制位图
CRect rc(30,20,260,260);
CBrush brush(RGB(0,0,0));
pDC->FrameRect(rc,&brush);//绘制矩形边框
rc.OffsetRect(240,0);//移动边框
BITMAP bitinfo;
bmp.GetBitmap(&bitinfo); //获取位图信息
int x=bitinfo.bmWidth;
int y=bitinfo.bmHeight;
pDC->StretchBlt(rc.left,rc.top,rc.Width(),rc.Heigh(),&memDC,0,0,x,y,SRCCOPY);
pDC->FrameRect(rc,&brush);
brush.DeleteObject();
bmp.DeleteObject();
memDC.DeleteDC();
CDialog::OnPaint();
}

2:显示磁盘中的位图文件LoadImage()
HANDLE LoadImage(HINSTANCE hinst,LPCTSTR lpszName,UINT utype,int cxDesired,int cyDesired,UINT fuLoad)
hinst包含图像的实例句柄
lpszname 图像的资源名称,如果从磁盘加载,则是图像的名称,包含全部路径
utype表示加载类型,IMAGE_BITMAP表示加载位图,IMAGE_CURSOR表示加载鼠标,
IMAGE_ICON表示加载同图标
cxdesired cyDesired表示图标或鼠标 的宽高,是位图时都是0
fuLoad表示加载类型LR_LOADTROMFILE表示从磁盘加载位图
返回值是加载的图像资源的句柄,为了根据资源句柄将位图输出到窗口,需要将位图对象CBitmap关联到位图句柄上,调用Attach()方法
bmp.Attach(m_hBmp)
在OnPaint()函数中

if(m_hbitmap)
{
CDC *pdc=GetDC();
CBitmap bmp;
bmp.Attach(m_hbitmap);//将位图句柄关联到位图对象
CDC memDC;
memDC.CreateCompatibleDC(pdc);
memDC.SelectObject(&bmp);
BITMAP bitinfo;
bmp.GetBitmap(&bitinfo);
int x=bitinfo.bmWidth;
int y=bitinfo.bmHeight;
pdc->BitBlt(10,50,x,y,&memDC,0,0,SRCCOPY);
bmp.DeleteObject();
memDC.DeleteDC();
在处理按钮时
void CLoadBmpDlg::OnButton1()
{
CFileDialog fl(TRUE,"bmp","",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"位图文件|*.bmp||");
if(fl.DoModal()==IDOK)
{
CString file=fl.GetPathName();//获取文文件名
m_edit.SetWindowText(file);
if(m_hbitmap!=NULL)
{
DeleteObject(m_hbitmap);
m_hbitmap=NULL;
}
m_hbitmap=(HBITMAP)LoadImage(NULL,file,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
OnPaint();
}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics