Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ] > Код на шару!
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.05.2013, 23:33
MadFatCat MadFatCat вне форума
Прохожий
 
Регистрация: 25.03.2013
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Canvas

В четырех строках ввода (Edit) ввести координаты двух угловых вершин
прямоугольника, его стороны параллельны кроме формы. Генератором случайных чисел сгенерировать 1000 случайных точек. Те из них, которые попадут мимо прямоугольника, отображать синим цветом, те, что внутрь прямоугольника - лимонным, на границы прямоуголольника - красным. По окончании "обстрела" вывести в надписи (Label) сколько точек попало в прямоугольник, сколько на его границы, сколько не попало в прямоугольник.
Ответить с цитированием
  #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.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:20.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter