`

VC显示位图数据

    博客分类:
  • VC++
阅读更多

BOOL CTestView ::  PaintDIB(HDC  hDC,RECT des,RECT src, MYBITMAP    myb){

 BITMAPINFOHEADER*    lpDIBHdr;            // BITMAPINFOHEADER指针
 BOOL     bSuccess=FALSE;      // 成功标志
 HPALETTE hPal=NULL;           // DIB调色板
 HPALETTE hOldPal=NULL;        // 以前的调色板
 
 lpDIBHdr  = myb.lpbmp;
 
 // 找到DIB图像象素起始位置
 int lw=WIDTHBYTES(myb.lpbmp->biWidth*8);
 
 // 获取DIB调色板,并选中它
 if (m_palDIB != NULL)
 {
  hPal = (HPALETTE) m_palDIB->m_hObject;
  
  // 选中调色板
  hOldPal = ::SelectPalette(hDC, hPal, TRUE);
 }
 
 // 设置显示模式
 ::SetStretchBltMode(hDC, COLORONCOLOR);
 int  bw =myb.lpbmp->biWidth;
 int  bh = myb.lpbmp->biHeight;
 
 // 判断是调用StretchDIBits()还是SetDIBitsToDevice()来绘制DIB对象
 if(des.right-des.left>=(src.right-src.left)&&
  (des.bottom-des.top)>=(src.bottom-src.top)
  )
 {
  // 原始大小,不用拉伸。
  bSuccess = ::SetDIBitsToDevice(hDC,                    // hDC
   0  ,        // DestX
   0 ,            // DestY
   bw   ,     // nDestWidth
   bh,       // nDestHeight
   0,            // SrcX
   0,   // SrcY
   0,                         // nStartScan
   bh,  // nNumScans
   myb.data,                  // lpBits
   (LPBITMAPINFO)lpDIBHdr,     // lpBitsInfo
   DIB_RGB_COLORS
   );            // wUsage

 }

   else
 {
  // 非原始大小,拉伸。
    bSuccess = StretchDIBits(hDC,                    // hDC
   des.left  ,        // DestX
   des.top ,            // DestY
   des.right   ,     // nDestWidth
   des.bottom,       // nDestHeight
   src.left,            // SrcX
   src.top,   // SrcY
   src.right,                         // nStartScan
   src.bottom,  // nNumScans
   myb.data,                  // lpBits
   (LPBITMAPINFO)lpDIBHdr,     // lpBitsInfo
   DIB_RGB_COLORS,
   SRCCOPY
   );            // wUsage
 }
 
    // 解除锁定
 
 // 恢复以前的调色板
 if (hOldPal != NULL)
 {
  ::SelectPalette(hDC, hOldPal, TRUE);
 }
 
 // 返回
 return bSuccess;

 

注意它们的第8个参数一个是uStartScan,为0,一个是nSrcWidth,不为0

分享到:
评论

相关推荐

    vc 如何显示位图 图片的显示

    ### 如何在VC++中显示位图:深入解析与实现 #### 1. 位图文件结构概述 位图文件(通常以`.bmp`作为扩展名)是一种存储图像信息的标准格式,尤其适用于需要精确控制像素级别的场景。位图文件主要分为四个部分: - ...

    vc 压缩显示位图

    标题"vc 压缩显示位图"指的是在VC++环境中,利用C++编程实现一个静态控件,不仅能够显示位图,还能在显示时对位图进行压缩处理,同时支持生成PNG图片的功能。这种技术在开发图形用户界面(GUI)时非常有用,可以优化...

    VC下8、16、24、32位位图的数据解析与显示

    在Windows环境下,尤其是在Visual C++ (VC++) 开发中,处理和显示位图(BMP)文件是一项常见的任务。BMP是一种无损的图形文件格式,广泛用于存储图像数据。本篇文章将深入探讨如何在VC++ 6.0 MFC(Microsoft ...

    VC显示位图,设备无关图

    在VC++编程环境中,"显示位图,设备无关图"是一个常见的任务,涉及到Windows图形设备接口(GDI)和设备无关位图(DIB)。在这个主题中,我们将深入探讨如何在VC++中创建一个小程序来显示位图,尤其是设备无关图。 ...

    VC打印位图,VC+MapX打印地图

    而VC打印位图则涉及到Windows图形设备接口(GDI)或者GDI+技术,用于将图像数据发送到打印机。 首先,要实现VC+MapX打印地图,通常需要以下步骤: 1. **使用MapX库**:在项目中引入MapX库,并创建一个MapX对象,...

    使用读取VC位图图像

    本文将详细介绍如何使用Visual C++(VC)来读取和显示位图图像,主要基于标题和描述中提到的"使用读取VC位图图像"这一主题。 首先,位图(Bitmap)是一种常见的图像文件格式,用于存储像素数据。在Windows API中,...

    VC列表框显示位图

    本主题将深入探讨如何在VC++的列表框中显示位图,并实现动态更新位图大小以及根据数据量自动添加滚动条的功能。 首先,我们需要了解MFC(Microsoft Foundation Classes),它是微软为VC++提供的一个面向对象的类库...

    基于VC 6 的位图图像处理方法

    - **显示位图**:利用Windows API中的绘图函数将位图显示在窗口上。 - **缩放位图**:通过调整位图的尺寸来改变其大小,同时保持图像质量。 - **其他操作**:包括但不限于旋转、颜色变换等高级功能。 #### 结论 ...

    vc6,分割视图显示位图

    在这个场景中,我们讨论的是如何在多视图(Multiple Document Interface, MDI)应用程序中实现分割视图并显示位图。MDI应用允许用户在一个窗口内打开多个子窗口,每个子窗口称为一个视图,可以独立显示和操作不同的...

    VC实现位图透明显示

    总结来说,实现"VC实现位图透明显示"需要对GDI和位图处理有深入的理解,包括位图的创建、加载、颜色空间以及透明度的概念。通过合理运用这些知识,开发者可以在VC++环境下创建出具有高级视觉效果的图形用户界面。

    VC6.0下bmp位图的读取与显示.doc

    5. 创建显示函数,将读取到的位图数据加载到设备上下文(DC)中,并使用CreateDIBSection创建位图对象。之后,可以使用CDC的DrawBitmap函数或者StretchDIBits函数将位图绘制到视图上。 6. 最后,记得在程序的适当...

    vc中位图任意创建例子

    在VC++编程环境中,位图(Bitmap)是一种常见的图像数据结构,用于存储和显示图形信息。位图可以是任意尺寸和颜色深度的,通常用于GUI(图形用户界面)中的图标、图片或者自定义画布。本示例将详细介绍如何在VC++中...

    位图的读取、显示和图像处理

    本文将详细讲解位图的基本概念、如何读取和显示位图,以及进行简单的图像处理,包括离散余弦变换(DCT)和中值滤波。 位图,也称为栅格图像,是一种像素阵列表示的图像格式,每个像素对应一个颜色值。常见的位图...

    vc位图文件的抖动显示

    GDI提供了一系列的函数,如CreateDIBSection、SetDIBits、GetDIBits等,用于创建、读取和显示位图。而GDI+则提供了更为现代且面向对象的API,如Bitmap类,能够更方便地处理图像数据。在进行抖动显示时,首先需要加载...

    VC写图片,位图的创建与保存

    - **位图数据的复制**:使用`SetDIBits`函数将原始位图数据复制到新创建的位图中,这样可以在不影响原始位图的情况下进行操作。 #### 4. 扩展与优化建议 - **错误处理**:虽然代码中已经加入了一些基础的错误处理...

    VC-showBITMAP.rar_SHOWBITMAP_vc 位图_位图读写操作

    在VC++环境中,显示位图并进行读写操作是一项常见的图像处理任务,这对于开发者来说是图形用户界面(GUI)设计中的重要技能。本项目“VC-showBITMAP.rar”旨在教授如何使用Visual C++来实现这一功能,特别是针对256...

    一个在VC下显示位图的源程序

    本文将详细讲解如何使用CBitmap类在VC6.0下显示位图,并结合提供的文件名称"Bmp"来讨论位图文件的基本知识。 CBitmap类是MFC(Microsoft Foundation Classes)库中的一个关键组件,它提供了处理Windows GDI...

    VC 图片控件显示多幅位图

    若要实现按特定条件搜索并显示位图,可能需要添加额外的数据结构来存储位图的元信息,比如关键字或标签。搜索功能将遍历这些信息并显示匹配的位图。 在项目中,`MpictureLx`可能是包含相关代码或资源的文件,例如...

    VC++6.0 打开位图文件源代码 BMP图像数据的读取与显示

    在本文中,我们将深入探讨如何使用VC++ 6.0打开和显示位图(BMP)文件。位图文件是一种常见的图像格式,广泛应用于各种图形处理任务。在VC++ 6.0环境下,通过理解BMP文件结构和利用C++编程技巧,我们可以实现对BMP...

    VC BMP位图实验报告

    1. **文件头(BITMAPFILEHEADER)**:包含文件类型标识("BM"或0x424d),文件大小,以及位图数据相对于文件头的偏移量等信息。 2. **位图信息头(BITMAPINFOHEADER)**:提供关于图像的详细信息,如图像宽度、高度...

Global site tag (gtag.js) - Google Analytics