我想做一个计数器,使用位图进行显示,10个数字在一个位图里面,大小一样,按顺序排列的,我在对话框上增加了一个 Picture 控件,请问,我如何从 位图中截取对应的数字并显示?请大家赐教,谢谢!

解决方案 »

  1.   

    HBITMAP[] 数组,OnTimer修改数组下标索引,OnPaint里贴图
      

  2.   

    请问我如何从一个bitmap里面把对应的数字截取出来? 现在头疼这个!
      

  3.   

    HBITMAP hBitmap; 
    hBitmap = ::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1)); 
      

  4.   

    LZ需要解决的实际上是一个位图分割问题,用CImage类即可。注意包含头文件#include <atlimage.h>
    以截取“0”示例说明:
    代码放在OnPaint()里的最后面。
            CBitmap m_bitmap;
    m_bitmap.LoadBitmap(IDB_BITMAP1);//导入整幅位图
    int width=0,height=0;
    CImage image,image1;
    image.Attach(m_bitmap);//加载位图m_bitmap
    width=image.GetWidth();
    height=image.GetHeight();
    image1.Create(width/10,height,image.GetBPP());//创建一个宽度1/10的目标存储对象
    HDC hdc = image1.GetDC();
    image.BitBlt(hdc,0,0,width/10,height,0,0,SRCCOPY);//COPY原图的1/10到目标对象里 CDC* pdc = GetDC();
    pdc->BitBlt(0,0,image1.GetWidth(),image1.GetHeight(),     CDC::FromHandle(hdc),0,0,SRCCOPY);//贴出来
    image1.ReleaseDC();   // 释放资源
    image1.Destroy();     //销毁资源
    m_bitmap.DeleteObject();
      

  5.   

    修改了一下,
    image.BitBlt(hdc,m_number,0,width/10,height,0,0,SRCCOPY);//COPY原图的1/10到目标对象里添加了一个按钮,作用是点击按钮后依次显示下一个数字,按钮中的代码如下
    void CsadfsfDlg::OnBnClickedButton1()
    {
    // TODO: 在此添加控件通知处理程序代码 m_number = m_number + 80; SendMessage(WM_PAINT);
    }点击按钮,可是结果是得到一个黑色区域,请问是什么原因? 如何解决。
      

  6.   

    主要是BitBlt的参数问题,建议百度看下这个函数的参数。
      

  7.   

    楼主知道不知道CImageList例子CImageList m_FileViewImages;
    m_FileViewImages.Create(16, bmpObj.bmHeight, nFlags, 0, 0);
    m_FileViewImages.Add(&bmp, RGB(255, 0, 255));
    你的一整张图片就是那个bmp  现在以横向16像素一个图片来划分了。