首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

改变图像中特定圆周的像素解决方法

2012-02-27 
改变图像中特定圆周的像素unit Unit1interfaceusesWindows, Messages, SysUtils, Variants, Classes, Gra

改变图像中特定圆周的像素
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的平方?你需要看看计算机图形学里面画圆的那部分。

热点排行