图片拼接!

/* 本段程序实现了将小图片拼接成大图片的过程,所建立的程序模版是基于对话框的程序。程序段放在了OnEraseBkgnd中了;并且使用了随机生成图片的方法,小图片的尺寸为50*50*/

#define rdint(i)(rand()%(int)(i)) //随机数定义
#define nRows 10    //生成地图的行数
#define nCols 6       //生成地图的列数

BOOL CMapDlg::OnEraseBkgnd(CDC* pDC)
{
 // TODO: Add your message handler code here and/or call default
 
 CDC memdc,bufdc;
 memdc.CreateCompatibleDC(pDC);
 bufdc.CreateCompatibleDC(pDC);
 HBITMAP bm[3];
 CBitmap fullMap;
 fullMap.CreateCompatibleBitmap(pDC,50*nCols,50*nRows);
 CString strBmpPath;
 int i;
 for(i=0;i<3;i++)
 {
  strBmpPath.Format("res//map%d.bmp",i);
  bm[i]=(HBITMAP)LoadImage(NULL,strBmpPath,IMAGE_BITMAP,50,50,LR_LOADFROMFILE);
 }
 memdc.SelectObject(&fullMap);
 int pos[nCols*nRows];
    for(i=0;i<nCols*nRows;i++)
 {
  pos[i]=rdint(2);
 }
 for(int j=0;j<nRows*nCols;j++)
 {
  int xStart,yStart;
  int x,y;
  x=j%nCols;
  y=j/nCols;
  xStart=x*50;
  yStart=y*50;
  bufdc.SelectObject(CBitmap::FromHandle(bm[pos[j]]));
  memdc.BitBlt(xStart,yStart,50,50,&bufdc,0,0,SRCCOPY);
 }
 pDC->BitBlt(0,0,50*nCols,50*nRows,&memdc,0,0,SRCCOPY);

// return CDialog::OnEraseBkgnd(pDC);
 return TRUE;
}

转载于:https://www.cnblogs.com/jh0262/archive/2006/11/22/2946862.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值