改变图像中特定圆周的像素解决方法
改变图像中特定圆周的像素
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
Image2: TImage;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i,j,k:integer;
begin
image1.Picture.Bitmap.loadfromfile('D:\我的文档\MATLAB\heihei.bmp');
image2.picture.bitmap.width:=image1.picture.bitmap.width;
image2.Picture.Bitmap.Height:=image1.Picture.Bitmap.Height;
for i := 0 to image1.picture.bitmap.Height do
for j := 0 to image1.picture.bitmap.Width do
begin
if (sqr(j-284)+sqr(i-264))=sqr(158) then //圆心为(284,264)半径为158的圆周的点像素置0
image2.canvas.pixels[j,i]:=0
else
image2.canvas.pixels[j,i]:=image1.canvas.pixels[j,i];
end;
end;
end.
上面代码我明明设置了在image2中定义圆周的像素为0了,为什么image2跟image1图像一样呢
------解决方案--------------------
(sqr(j-284)+sqr(i-264))=sqr(158)
这句,那些像素哪这么正好是158的平方?你需要看看计算机图形学里面画圆的那部分。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
Image2: TImage;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i,j,k:integer;
begin
image1.Picture.Bitmap.loadfromfile('D:\我的文档\MATLAB\heihei.bmp');
image2.picture.bitmap.width:=image1.picture.bitmap.width;
image2.Picture.Bitmap.Height:=image1.Picture.Bitmap.Height;
for i := 0 to image1.picture.bitmap.Height do
for j := 0 to image1.picture.bitmap.Width do
begin
if (sqr(j-284)+sqr(i-264))=sqr(158) then //圆心为(284,264)半径为158的圆周的点像素置0
image2.canvas.pixels[j,i]:=0
else
image2.canvas.pixels[j,i]:=image1.canvas.pixels[j,i];
end;
end;
end.
上面代码我明明设置了在image2中定义圆周的像素为0了,为什么image2跟image1图像一样呢
------解决方案--------------------
(sqr(j-284)+sqr(i-264))=sqr(158)
这句,那些像素哪这么正好是158的平方?你需要看看计算机图形学里面画圆的那部分。