`
sogotobj
  • 浏览: 670889 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

使用GDI+位图数据扫描线处理图像的小技巧

阅读更多

在GDI+图像处理中,我们经常利用BitmapData结构对图像数据扫描线进行操作,在我的大部分BOLG文章中,都使用了这个方法。GDI+位图通过其LockBits方法和UnlockBits方法,分别用来锁定(获取)和解锁(释放)BitmapData数据,我们一般都在这2个方法之间操作图像数据扫描线,如:

由于在LockBits方法和UnlockBits方法之间,位图对象是锁定的,很多方法无法调用,有时也感到有些不方便,甚至繁琐。比如对图像数据扫描线进行多次处理,在处理过程中想分步骤显示或者保存时,就不得不反复调用这2个方法;还有就是位图格式低于24位格式的图像无法锁定为24位或32位数据进行操作(我们大多利用24位或者32位像素扫描线进行图像处理)等等。

可以使用一些小技巧来规避因位图对象锁定而带来的不方便,也可对低于24位格式的图像进行24位或32位图像数据扫描线操作。请看下面的例子:

上面例子代码中作了较详细的说明,就不再解释。

上面的例子为了解释位图对象共享和数据处理同步,代码显得有些凌乱,其实只要记住一点:例子中,自定义位图对象bmp2通过bmp->LockBits方法取得数据后,如果无特殊需要,bmp就可解锁甚至delete,这时也不再需要对bmp2锁定,就可通过对data的处理,达到对bmp2包含的图像数据进行改变的目的。

将上面代码重新规划一下,使之清晰一些:

通过上面代码,就可以看出调用GetBitmapData后,所有的图像数据信息就已经包含在BitmapData结构中了,所以我们可以对这个数据结构进行任何的操作,而不再依赖任何GDI+对象,由此避免了本文前面所说的不方便。之所以又建立一个自定义数据位图对象,只是要借助它进行图像显示、保存等操作而已。

利用类似于前面的例子代码还可以进行拼图操作:

本文代码采用BCB编译器。如有错误,可来信指正,并请提出建议:maozefa@hotmail.com

分享到:
评论

相关推荐

    GDI+开发包 GDI+ SDK

    GDI+(Graphics Device Interface Plus)是微软推出的一种图形设备接口的增强版本,它为Windows应用程序提供了丰富的2D图形、图像处理和文本渲染能力。GDI+开发包,即GDI+ SDK,是用于帮助开发者利用GDI+功能进行...

    使用gdi+进行图像处理.rar_GDI+ 图像_c gdi_gdi_gdi 图像处理_gdi+

    GDI+提供了丰富的绘图功能,包括矢量图形、位图操作、颜色管理以及文本渲染等,为开发者提供了在Windows应用程序中进行复杂图像处理的能力。 在C++编程环境中,GDI+被广泛用于创建用户界面、绘制图表、处理图像等...

    GDI+图像程序设计(PDF & 源码 -电子工业出版社)

    本书是一本为.NET开发人员讲授如何编写Windows和Web图形应用程序的专著,书中全面介绍了GDI+和Windows图形程序设计的基本知识和GDI+图形程序设计的各个方面。 本书适合于开发GDI+图形应用程序的初、中级程序员...

    Delphi使用GDI+制作任意图片形状窗口

    在本文中,我们将深入探讨如何使用Delphi集成开发环境结合GDI+库来创建具有任意图片形状的不规则窗体。GDI+是Microsoft提供的一个图形设备接口,它扩展了传统的GDI功能,使得开发者可以更方便地进行图形绘制和处理。...

    GDI+教程(C++中文版).pdf

    GDI+是微软公司提供的一套图像处理和图形输出的编程接口,它是基于类的应用程序编程接口(API),专门针对C/C++开发者使用。GDI+的全称为Graphical Device Interface Plus,是在GDI基础上的增强版,用于管理Windows...

    GDI+在数字图像处理中的具体的应用实例

    总结来说,GDI+在数字图像处理中的应用实例展示了如何在vc环境下使用GDI+的特性进行图像的读取、显示、变换和处理。通过学习和实践这些实例,开发者可以更好地理解和掌握GDI+在图像处理中的强大功能。

    GDI+图形程序设计.zip

    GDI+(Graphics Device Interface Plus)是Windows操作系统中用于图形绘制和图像处理的一个强大的API,它是GDI(Graphics Device Interface)的升级版本。GDI+提供了丰富的绘图功能,包括二维几何图形、曲线、文本、...

    GDI+技术|c++图像处理

    ### GDI+技术详解及其在C++图像处理中的应用 #### 一、GDI+技术简介 GDI+(Graphics Device Interface Plus)是一项由微软开发的技术,它在Windows 2000及其后续版本中首次引入。GDI+是对原有GDI(Graphics Device...

    GDI+的说明 GDI+的说明 GDI+的说明 GDI+的说明

    GDI+还支持其他高级特性,如重新着色、色彩修正、消除走样和元数据,这些都极大地提高了图像处理的质量和灵活性。在开发基于对话框或单文档/多文档的应用程序时,开发者可以利用GDI+的这些特性来构建交互式和视觉上...

    VB6 GDI+入门教程(最新版)

    1. **兼容性和改进**:尽管Windows XP仍然支持旧版本的GDI,但GDI+提供了更多的功能和更好的性能,特别是在处理复杂图形和图像方面。 2. **设备无关性**:GDI+允许开发者编写设备无关的应用程序,这意味着开发者无需...

    GDI+SDK学习教程与数字图像处理运用

    GDI+(Graphics Device Interface Plus)是Windows操作系统中用于图形绘制和图像处理的一个强大的API,它为开发者提供了丰富的功能,可以实现复杂的2D图形、文本渲染以及图像操作。本教程聚焦于GDI+ SDK的学习,旨在...

    aaaaaaaa.cn.rar_GDI+ 旋转_GDI+ 旋转_gdi+_图像旋转_图像旋转 directdraw

    GDI+(Graphics Device Interface Plus)是Windows API的一部分,它提供了丰富的图形绘制功能,包括图像处理、矢量图形以及文本渲染等。 图像旋转是图形处理中的常见操作,它可以用于创建动态效果或调整图像的方向...

    GDI+开发库

    2. 图像处理:GDI+支持位图(Bitmap)、图标(Icon)、元文件(Metafile)等多种图像类型。位图是像素表示的图像,图标包含多个不同尺寸和颜色深度的位图,元文件则可以存储一系列的绘图操作。 3. 变换:GDI+提供了...

    在Delphi XE10.2版本可用的GDI+库

    在Delphi XE10.2版本中,开发者...通过这些知识点,你可以开始在Delphi XE10.2项目中使用GDI+库,实现丰富的图形界面和图像处理功能。记得在实践中不断探索和学习,GDI+库能为你的应用带来更专业、更美观的视觉体验。

    测试GDI+下JPG和PNG图像性能的程序

    GDI+(Graphics Device Interface Plus)是微软提供的一种图形处理库,它扩展了传统的GDI功能,为开发者提供了更强大的2D图形渲染能力,包括对矢量图形、位图图像以及高级图像处理的支持。 1. **GDI+与图像处理** ...

    如何使用GDI+制作圆形图片(类似QQ圆形头像)(MFC,VC)

    在Windows编程领域,GDI+(Graphics Device Interface Plus)是一个强大的图形处理库,它扩展了传统的GDI功能,提供了更多的图形绘制和图像处理能力。在MFC(Microsoft Foundation Classes)框架下,我们可以利用GDI...

    ( Delphi 7 )使用GDI+进行图形缩放、拖动,多种图片格式支持,仅简单示例

    使用GDI+进行图形缩放、拖动,多种图片格式支持,仅简单示例。 问题源贴:http://bbs.csdn.net/topics/390638094

    VB 经典GDI+模块

    7. **图像处理**:除了基本的显示外,GDI+还支持图像的基本处理,如裁剪、合并、滤镜效果等,开发者可以利用这些功能实现图片编辑功能。 8. **内存绘图**:GDI+支持在内存中创建位图并进行绘图,然后再将其绘制到...

    VC6使用GDI+相关文件

    GDI+是其增强版,增加了对矢量图形、位图操作、颜色空间、透明度等高级特性的支持,同时提供了面向对象的API,更易于使用。 6. **兼容性问题**:需要注意的是,虽然VC6是一个较老的开发环境,但GDI+是为Windows XP...

Global site tag (gtag.js) - Google Analytics