Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как нарисовать круг в делфи по пикселям?


Страницы:   1 2

donar19 ©   (2009-11-19 19:12:00) 

Имеется код на 1/8 круга. А как написать ещё 7 шагов чтобы получился круг?

type
 TForm1 = class(TForm)
   Edit1: TEdit;
   Image1: TImage;
   StringGrid1: TStringGrid;
   Label1: TLabel;
   procedure FormCreate(Sender: TObject);
   procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
     Y: Integer);
     procedure Rinkis(xc,yc,r: integer);
   procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='k' ;
StringGrid1.Cells[1,0]:='Xk' ;
StringGrid1.Cells[2,0]:='Yk' ;
StringGrid1.Cells[3,0]:='Pk' ;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
Label1.Caption:=IntToStr(x)+', '+IntToStr(y);
end;
procedure TForm1.Rinkis(xc,yc,r: integer);
var xk,yk,k,pk: integer;
begin
 //1.solis
 k:=0;
 xk:=0;
 yk:=R;

 //2.solis
 pk:=1-r;

 //3.solis
 while xk<yk do
   begin
   k:=k+1;
   if pk<0 then
     begin
     xk:=xk+1;
     pk:=pk+2*xk+1;
     end
       else
         begin
         xk:=xk+1;
         yk:=yk-1;
         pk:=pk+2*xk+1-2*yk;

         end;
         Image1.Canvas.Pixels[xc+xk,yc+yk]:=clBlue;

         StringGrid1.Cells[0,k+1]:=IntToStr(k);
         StringGrid1.Cells[1,k+1]:=IntToStr(xk);
         StringGrid1.Cells[2,k+1]:=IntToStr(yk);
         StringGrid1.Cells[3,k+1]:=IntToStr(pk);
   end;

end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 Rinkis(X,Y,StrToInt(Edit1.Text));
end;

end.


Anatoly Podgoretsky   (2009-11-19 20:24:00) [1]

> donar19  (19.11.2009 20:12:18)  [18]

Знать не надо, но и вопрос не по Дельфи, а по геометрии.


donar19   (2009-11-19 20:19:00) [2]

Наверное Вам больше заняться нечем, чем самоутверждаться Online ?


Sapersky   (2009-11-19 20:19:00) [3]

По-моему через тригонометрию проще:
http://www.clascalc.ru/Images/sin-circle.gif


Сергей М.   (2009-11-19 20:18:00) [4]

Аж слеза прошибла ..
Таки захотелось подать.
Жаль что не пятница и не паперть.


donar19   (2009-11-19 20:13:00) [5]

Григорьев Антон большое спасибо


Игорь Шевченко   (2009-11-19 20:12:00) [6]

Сами мы не местные...


donar19   (2009-11-19 20:12:00) [7]

Сергей М.

Программирование в Делфи. Я первый раз открыл делфи и по вашему должен сразу же всё знать и уметь? Форум называется - Начинающим. Не хотите помогать - проходите мимо


Сергей М.   (2009-11-19 20:08:00) [8]


> надо это понять


"это" - это что ?


donar19   (2009-11-19 20:08:00) [9]

Eraser
Большое спасибо, он мне поможет учитывая первый опыт в программировании вообще


Григорьев Антон   (2009-11-19 20:08:00) [10]

Подсказка: если у нас есть точка (X,Y), то:
1. Симметричная ей относительно вертикальной оси X=Xo точка будет иметь координаты (2*Xo-X,Y)
2. Симметричная ей относительно точки (Xo,Yo) точка будет иметь координаты (2*Xo-X,2*Yo-Y)
3. Точка, симметричная ей относительно прямой, проходящей через точку (Xo,Yo), будет иметь координаты (Xo+Y-Yo,Yo+X-Xo).

Подсказка 2: в вашем случае (Xo,Yo) - это координаты центра окружности.

Итак, формулы для трёх из семи недостающих кусокв окружности я вам дал. Теперь, взяв в руки карандаш и бумагу, вы должны понять, почему формулы именно такие, и тогда вы легко сможете вывести формулы для оставшихся четырёх кусков.


Eraser   (2009-11-19 20:06:00) [11]

> Я спросил как это осуществить, какой то материал или пособие
> или примерно теорию.

школьный учебник по геометрии.


donar19   (2009-11-19 20:02:00) [12]

мне для начала надо это понять а не код, книг у нас не продают и учебников нет


donar19   (2009-11-19 20:01:00) [13]

нет, я этого не просил. Я спросил как это осуществить, какой то материал или пособие или примерно теорию.


Сергей М.   (2009-11-19 19:59:00) [14]


> Уже на Ты перешли?


Уже ждешь когда за тебя программу напишут ?


donar19   (2009-11-19 19:57:00) [15]

Уже на Ты перешли?


Сергей М.   (2009-11-19 19:57:00) [16]


> не всё понимаю, что говорят на латышском


Приведенный тобой код тоже, надо понимать, на латышском ?


Сергей М.   (2009-11-19 19:56:00) [17]


> А делать надо


А никто и не против.
Но делать, заметь, надо ТЕБЕ.


donar19   (2009-11-19 19:54:00) [18]

Я русский, а учусь в школе в Латвии и не всё понимаю, что говорят на латышском. А делать надо


donar19   (2009-11-19 19:54:00) [19]

Я русский, а учусь в школе в Латвии и не всё понимаю, что говорят. А делать надо


Сергей М.   (2009-11-19 19:54:00) [20]

Было бы.
Если бы не было так грустно.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо