⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.cpp

📁 C++ Builder 6 编程实例教程-北京希望电子出版社出版
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmMain *frmMain;
struct rgbp{
            int r;
            int g;
            int b;
            };
rgbp rgbp[1000][1000];
int x,y,i,j;
Graphics::TBitmap * Bitmap;

//---------------------------------------------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::Smooth1Click(TObject *Sender)
{
    int red,green,blue;
    Image1->Picture->Bitmap->Assign(Image1->Picture->Bitmap);
    GetRgbp(Sender);
    //取得颜色信息
    for(i=1;i<x-2;i++)
    {
        for(j=1;j<y-2;j++)
        {
            red=rgbp[i-1][j-1].r+rgbp[i-1][j].r+rgbp[i-1][j+1].r+
                rgbp[i][j-1].r+rgbp[i][j].r+rgbp[i][j+1].r+
                rgbp[i+1][j-1].r+rgbp[i+1][j].r+rgbp[i+1][j+1].r;
            green= rgbp[i-1][j-1].g+rgbp[i-1][j].g+rgbp[i-1][j+1].g+
                   rgbp[i][j-1].g+rgbp[i][j].g+rgbp[i][j+1].g+
                   rgbp[i+1][j-1].g+rgbp[i+1][j].g+rgbp[i+1][j+1].g;
            blue=rgbp[i-1][j-1].b+rgbp[i-1][j].b+rgbp[i-1][j+1].b+
                 rgbp[i][j-1].b+rgbp[i][j].g+rgbp[i][j+1].g+
                 rgbp[i+1][j-1].g+rgbp[i+1][j].g+rgbp[i+1][j+1].g;
            //颜色处理
            Bitmap->Canvas->Pixels[i][j]=RGB(red/9,green/9,blue/9);
        }
    }
    Image2->Picture->Bitmap->Assign(Bitmap);
}
//---------------------------------------------------------------------------

TfrmMain::GetRgbp(TObject * sender)
{
    //TODO: Add your source code here
TColor color;
x=Image1->Picture->Width;
y=Image1->Picture->Height;
for(i=0;i<x-1;i++)
{
    for(j=0;j<y-1;j++)
    {
        color=Image1->Canvas->Pixels[i][j];
        rgbp[i][j].r=GetRValue(color);
        rgbp[i][j].g=GetGValue(color);
        rgbp[i][j].b=GetBValue(color);
     }
}
}

void __fastcall TfrmMain::Sharp1Click(TObject *Sender)
{
    Image1->Picture->Bitmap->Assign(Image1->Picture->Bitmap);
    int red,green,blue;
    GetRgbp(Sender);
    //取得颜色信息
    for(i=1;i<x-2;i++)
    {
        for(j=1;j<y-2;j++)
        {
            red=rgbp[i][j].r+0.5*(rgbp[i][j].r-rgbp[i-1][j-1].r);
            green=rgbp[i][j].g+0.5*(rgbp[i][j].g-rgbp[i-1][j-1].g);
            blue=rgbp[i][j].b+0.5*(rgbp[i][j].b-rgbp[i-1][j-1].b);
            //颜色处理
            if(red>255) red=255;
            if(red<0) red=0;

            if(green>255) green=255;
            if(green<0) green=0;

            if(blue>255) blue=255;
            if(blue<0) blue=0;

            Bitmap->Canvas->Pixels[i][j]=RGB(red,green,blue);
        }
    }
    Image2->Picture->Bitmap->Assign(Bitmap);
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::Emboss1Click(TObject *Sender)
{
    Image1->Picture->Bitmap->Assign(Image1->Picture->Bitmap);
    int red,green,blue;
    GetRgbp(Sender);
    //取得颜色信息
    for(i=1;i<x-2;i++)
    {
        for(j=1;j<y-2;j++)
        {
            red=abs(rgbp[i][j].r-rgbp[i+1][j+1].r+128);
            green=abs(rgbp[i][j].g-rgbp[i+1][j+1].g+128);
            blue=abs(rgbp[i][j].b-rgbp[i+1][j+1].b+128);
            //颜色处理
            if(red>255) red=255;
            if(red<0) red=0;

            if(green>255) green=255;
            if(green<0) green=0;

            if(blue>255) blue=255;
            if(blue<0) blue=0;
            Bitmap->Canvas->Pixels[i][j]=RGB(red,green,blue);
        }
    }
    Image2->Picture->Bitmap->Assign(Bitmap);
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::Disffuse1Click(TObject *Sender)
{
    int rx,ry;
    Image1->Picture->Bitmap->Assign(Image1->Picture->Bitmap);
    int red,green,blue;
    GetRgbp(Sender);
    //取得颜色信息
    for(i=1;i<x-3;i++)
    {
        for(j=1;j<y-3;j++)
        {
            rx=random(3);
            ry=random(3);
            red=rgbp[i+rx][j+ry].r;
            green=rgbp[i+rx][j+ry].g;
            blue=rgbp[i+rx][j+ry].b;
            //颜色处理
            Bitmap->Canvas->Pixels[i][j]=RGB(red,green,blue);
        }
    }
    Image2->Picture->Bitmap->Assign(Bitmap);
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::Invert1Click(TObject *Sender)
{
    Image1->Picture->Bitmap->Assign(Image1->Picture->Bitmap);
    int red,green,blue;
    GetRgbp(Sender);
    //取得颜色信息
   for(i=1;i<x-2;i++)
    {
        for(j=1;j<y-2;j++)
        {
            red=255-rgbp[i][j].r;
            green=255-rgbp[i][j].g;
            blue=255-rgbp[i][j].b;
            //颜色处理
            Bitmap->Canvas->Pixels[i][j]=RGB(red,green,blue);
        }
    }
    Image2->Picture->Bitmap->Assign(Bitmap);
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::Mosic1Click(TObject *Sender)
{
    Image1->Picture->Bitmap->Assign(Image1->Picture->Bitmap);
    int red,green,blue;
    GetRgbp(Sender);
    //取得颜色信息
    for(i=1;i<x-2;i+=3)
    {
        for(j=1;j<y-2;j+=3)
        {
            red=rgbp[i-1][j-1].r+rgbp[i-1][j].r+rgbp[i-1][j+1].r+
                rgbp[i][j-1].r+rgbp[i][j].r+rgbp[i][j+1].r+
                rgbp[i+1][j-1].r+rgbp[i+1][j].r+rgbp[i+1][j+1].r;
            green= rgbp[i-1][j-1].g+rgbp[i-1][j].g+rgbp[i-1][j+1].g+
                   rgbp[i][j-1].g+rgbp[i][j].g+rgbp[i][j+1].g+
                   rgbp[i+1][j-1].g+rgbp[i+1][j].g+rgbp[i+1][j+1].g;
            blue=rgbp[i-1][j-1].b+rgbp[i-1][j].b+rgbp[i-1][j+1].b+
                 rgbp[i][j-1].b+rgbp[i][j].g+rgbp[i][j+1].g+
                 rgbp[i+1][j-1].g+rgbp[i+1][j].g+rgbp[i+1][j+1].g;
            //颜色处理
            Bitmap->Canvas->Pixels[i-1][j-1]=RGB(red/9,green/9,blue/9);
            Bitmap->Canvas->Pixels[i-1][j]=RGB(red/9,green/9,blue/9);
            Bitmap->Canvas->Pixels[i-1][j+1]=RGB(red/9,green/9,blue/9);
            Bitmap->Canvas->Pixels[i][j-1]=RGB(red/9,green/9,blue/9);
            Bitmap->Canvas->Pixels[i][j]=RGB(red/9,green/9,blue/9);
            Bitmap->Canvas->Pixels[i][j+1]=RGB(red/9,green/9,blue/9);
            Bitmap->Canvas->Pixels[i+1][j-1]=RGB(red/9,green/9,blue/9);
            Bitmap->Canvas->Pixels[i+1][j]=RGB(red/9,green/9,blue/9);
            Bitmap->Canvas->Pixels[i+1][j+1]=RGB(red/9,green/9,blue/9);
        }
    }
    Image2->Picture->Bitmap->Assign(Bitmap);
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::D128Click(TObject *Sender)
{
    Image1->Picture->Bitmap->Assign(Image1->Picture->Bitmap);
    int red,green,blue;
    GetRgbp(Sender);
    //取得颜色信息
    for(i=1;i<x-1;i+=2)
    {
        for(j=1;j<y-1;j+=2)
        {
            red=rgbp[i][j].r;
            green=rgbp[i][j].g;
            blue=rgbp[i][j].b;
            //颜色处理
            Bitmap->Canvas->Pixels[i][j]=RGB(red,green,blue);
            Bitmap->Canvas->Pixels[i][j+1]=RGB(red,green,blue);
            Bitmap->Canvas->Pixels[i+1][j]=RGB(red,green,blue);
            Bitmap->Canvas->Pixels[i+1][j+1]=RGB(red,green,blue);
        }
    }
    Image2->Picture->Bitmap->Assign(Bitmap);

}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::D64Click(TObject *Sender)
{
    Image1->Picture->Bitmap->Assign(Image1->Picture->Bitmap);
    int red,green,blue;
    GetRgbp(Sender);
    //取得颜色信息
    for(i=1;i<x-1;i+=4)
    {
        for(j=1;j<y-1;j+=4)
        {
            red=rgbp[i][j].r;
            green=rgbp[i][j].g;
            blue=rgbp[i][j].b;
            //颜色处理
            Bitmap->Canvas->Pixels[i][j]=RGB(red,green,blue);
            Bitmap->Canvas->Pixels[i][j+1]=RGB(red,green,blue);
            Bitmap->Canvas->Pixels[i][j+2]=RGB(red,green,blue);
            Bitmap->Canvas->Pixels[i][j+3]=RGB(red,green,blue);

            Bitmap->Canvas->Pixels[i+1][j]=RGB(red,green,blue);
            Bitmap->Canvas->Pixels[i+1][j+1]=RGB(red,green,blue);
            Bitmap->Canvas->Pixels[i+1][j+2]=RGB(red,green,blue);
            Bitmap->Canvas->Pixels[i+1][j+3]=RGB(red,green,blue);

            Bitmap->Canvas->Pixels[i+2][j]=RGB(red,green,blue);
            Bitmap->Canvas->Pixels[i+2][j+1]=RGB(red,green,blue);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -