Тема: Canvas
Показать сообщение отдельно
  #2  
Старый 29.05.2013, 05:29
Zinkutal Zinkutal вне форума
Прохожий
 
Регистрация: 27.03.2013
Сообщения: 3
Версия Delphi: Delphi 7 Lite E
Репутация: 10
Подмигивание

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    edt1: TEdit;
    edt2: TEdit;
    edt3: TEdit;
    edt4: TEdit;
    btn1: TButton;
    btn2: TButton;
    lbl1: TLabel;
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  x1,x2,y1,y2,q,k,z: Integer;
{$R *.dfm}

 {В четырех строках ввода (Edit) ввести координаты двух угловых вершин
прямоугольника, его стороны параллельны кроме формы. Генератором случайных
чисел сгенерировать 1000 случайных точек. Те из них, которые попадут мимо
прямоугольника, отображать синим цветом, те, что внутрь прямоугольника -
лимонным, на границы прямоуголольника - красным. По окончании "обстрела"
вывести в надписи (Label) сколько точек попало в прямоугольник, сколько на его
границы, сколько не попало в прямоугольник.}
procedure TForm1.btn1Click(Sender: TObject);

begin
  x1:=StrToInt(edt1.text);
  y1:=StrToInt(edt2.text);
  x2:=StrToInt(edt3.text);
  y2:=StrToInt(edt4.text);
  edt1.Hide;
  edt2.Hide;
  edt3.Hide;
  edt4.Hide;
  Form1.Canvas.Brush.color:=clblack;
  Form1.Canvas.Pen.color:=clwhite;
  form1.Canvas.rectangle(x1,y1,x2,y2);
  x2:=x2-1;
  y2:=y2-1;
end;

procedure TForm1.btn2Click(Sender: TObject);
var
  px: array [1..1000] of integer;
  py: array [1..1000] of Integer;
  i:Integer;
begin
  randomize;
  for i:=1 to 1000 do
  begin

    px[i]:=Random(1000);
    py[i]:=Random(500);
   if ( px[i]>x1) and (px[i]<x2) and (py[i]>y1) and ( py[i]<y2) then
         begin Form1.Canvas.Pixels[px[i],py[i]]:=clyellow;inc(q);end
   else
   if (((px[i]=x1) or (px[i]=x2))and(py[i]>y1) and (py[i]<y2)) then
         begin Form1.Canvas.Pixels[px[i],py[i]]:=clred; Inc(k);end
   else
   if (((py[i]=y1) or (py[i]=y2))and(px[i]>x1) and (px[i]<x2)) then
         begin Form1.Canvas.Pixels[px[i],py[i]]:=clred;Inc(k);end
   else
   begin Form1.Canvas.Pixels[px[i],py[i]]:=clblue; inc(z); end ;
  end;

   lbl1.caption:='Внутри='+floattostr(q)+' На границе='+floattostr(k)+' На снаружи='+floattostr(z);

end;

end.
Ответить с цитированием