📄 unit1.cpp
字号:
//---------------------------------------------------------------------------
#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 + -