用C Builder对图像进行特殊效果处理

文章作者 100test 发表时间 2008:01:04 13:01:12
来源 100Test.Com百考试题网


在Windows编程中图像处理相对比较复杂,好在C Builder提供了一些图形类,它们通过对Windows中的图形对象进行包装,从而大大简化了图像操作的难度。下面就通过对图像进行柔化、锐化、浮雕效果等几个特殊效果处理来具体说明一下。

一、准备工作 位图图形实际上是像素的二维数组,它记录了每个像素的颜色信息,而TCanvas类提供了Pixels属性,用它可以存取指定像素的颜色值,通过这个属性将位图图形的部分或全部像素的颜色值进行相应的变换处理,就可以实现图像的特殊效果处理。在Windows中颜色是根据红、绿、蓝三种颜色的饱和度来定义的,在这里我们要将像素颜色值的红、绿、蓝分量从像素值中分离出来,分别加以保存,所以需要定义一个结构来存放颜色分量:

struct rgb_str
{
unsigned char r_color.
unsigned char g_color.
unsigned char b_color.
}.
rgb_str rgb[2000][2000].

建立全局变量:Graphics::TBitmap *bitmap.

//用来存放变换后的位图

int i,j,width,height.

在窗体上放置一个TImage组件和OpenPictureDialog组件,将TImage的AutoSize属性设为true,将OpenPictureDialog的Filter设为*.bmp。当用户选择Open命令后,打开相应的对话框,让用户选择要处理的图像文件,然后程序将图像的所有像素的颜色分量保存到rgb数组中:

void __fastcall TForm1::mnuFileOpenClick(TObject *Sender)
{
TColor color.
if(OpenPictureDialog1- >Execute())
{
Image1- >Picture->LoadFromFile(OpenPictureDialog1- >FileName).
width=Image1- >Picture- >Width. height=Image1->Picture->Height.
for(i=0.i< width-1.i )
for(j=0.j< height-1.j )
{
color=Image1- >Canvas->Pixels[i][j].
rgb[i][j].r_color=GetRValue(color).
rgb[i][j].g_color=GetGValue(color).
rgb[i][j].b_color=GetBValue(color).
}
bitmap=new Graphics::TBitmap.
bitmap->Width=width.
bitmap->Height=height.
}
}

相关文章


怎样在ACCE 表中隐藏列
恢复从Acce 2000、Acce 2002或Acce 2003数据库中删除表的方法
用CB实现图像的特技显示
使用双缓冲技术绘制曲线图
用C Builder对图像进行特殊效果处理
FAQ:用代码定义字段AllowZeroLength和Required属性
怎样在表中插入、删除和移动字段
C 编程指南学习(七)
C 编程指南学习(六)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛