绘制图片步骤

//图片加载有两种方法: 1.对话框ID加载  2. 在文件中加载
一. 使用内存兼容DC来绘制图片

1. 申请资源:  
   PAINTSTRUCT ps;
   BeginPaint(hWnd , &ps);

2. 获取画布:  HDC  hClientDC = GetDC(hWnd); 

3. 加载位图,得到位图句柄:     
   HBITMAP hBitmap = LoadBitmap(g_hIns ,MAKEINTRESOURCE(IDB_BITMAP1)); 

4. 获取位图的宽和高:   BITMAP  bitmapInfo = { 0 };
   GetObject(hBitmap ,sizeof(BITMAP),&bitmapInfo); 

5. 创建内存兼容DC: HDC hMemDC = CreateCompatibleDC(hClientDC);

6. 将位图选入到内存兼容DC中(这样图片就被绘制在内存中了):
      SelectObject(hMemDC , hBitmap);

7. 绘制图片到窗口上<BitBlt函数等比拷贝 or StretchBlt函数进行拉伸拷贝>: 
   // 获取客户区大小
   RECT rt;
   GetClientRect(hWnd , &rt);
   // 将内存兼容DC的内容等比拷贝到窗口DC中
   BitBlt(hClientDC,0, 0,rt.right, rt.bottom,hMemDC,0,0,SRCCOPY <SRCINERT 异或后贴入>);  //

8. 结束绘图: EndPaint(hWnd , &ps);

二. 使用位图画刷来绘制图片

1. 申请资源:  
   PAINTSTRUCT ps;
   BeginPaint(hWnd , &ps);

2. 获取画布:  HDC  hClientDC = GetDC(hWnd); 

3. 从文件中加载位图:    
    HBITMAP hbitmap2 =
    (HBITMAP)LoadImage( g_hIns ,
     _T( "2.bmp" ) ,/*图片的路径*/
     IMAGE_BITMAP ,/*图片的类型*/
     0 , 0 ,/*图片的宽和高*/
     LR_DEFAULTSIZE | LR_LOADFROMFILE/*使用文件路径,并且使用图片默认大小*/
     );

4. 创建位图画刷:  HBRUSH hBrushBitmap = CreatePatternBrush(hbitmap2);

5. 选入一个透明画笔(这样图片就不会有其它颜色的边框):
   SelectObject(hClientDC , GetStockObject(NULL_PEN));

6. 将画刷选入到DC中: SelectObject(hClientDC , hBrushBitmap);

7. 画矩形(使用位图画刷来填充矩形内部): Rectangle(hClientDC , 20 , 20 , 250 , 250);

8. 结束绘图: EndPaint(hWnd , &ps);

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值