Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.01.10;
Скачать: CL | DM;

Вниз

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

 
donar19 ©   (2009-11-19 19:12) [0]

Имеется код на 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.


 
Сергей М. ©   (2009-11-19 19:46) [1]


> Имеется код на 1/8 круга


Стесняюсь спросить - и откуда же он у тебя заимелся ?
Неужели сам написал ?!


 
donar19 ©   (2009-11-19 19:47) [2]

Да! Потому что обьясняли как делать! А остальное сказали по семетрии.. а я не понимаю как


 
Сергей М. ©   (2009-11-19 19:52) [3]


> Да!


Ай да ты !
Ай да малацца !


> Потому что обьясняли как делать!


В смысле какие буковки тыкать на клавиатуре ?
Или как объясняли ?


> остальное сказали по семетрии


Стесняюсь спросить - "семетрия" это кто ?!


> а я не понимаю


Так ведь объясняли же !
Ты где летал, когда объясняли ?)


 
donar19 ©   (2009-11-19 19:53) [4]

Смешно..


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

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


 
donar19 ©   (2009-11-19 19:54) [6]

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


 
donar19 ©   (2009-11-19 19:54) [7]

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


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


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


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


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


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


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


 
donar19 ©   (2009-11-19 19:57) [10]

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


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


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


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


 
donar19 ©   (2009-11-19 20:01) [12]

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


 
donar19 ©   (2009-11-19 20:02) [13]

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


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

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

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


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

Подсказка: если у нас есть точка (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) - это координаты центра окружности.

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


 
donar19 ©   (2009-11-19 20:08) [16]

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


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


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


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


 
donar19 ©   (2009-11-19 20:12) [18]

Сергей М.

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


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

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


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

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


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

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


 
Sapersky   (2009-11-19 20:19) [22]

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


 
donar19 ©   (2009-11-19 20:19) [23]

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


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

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

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



Страницы: 1 вся ветка

Текущий архив: 2010.01.10;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.013 c
2-1258537315
Кузьма
2009-11-18 12:41
2010.01.10
Работа с ячейками Excel при экспорте из StringGrid


3-1232612594
MacroDenS
2009-01-22 11:23
2010.01.10
Структурирование данных


15-1254334797
Kerk
2009-09-30 22:19
2010.01.10
MySQL разность дат в днях


15-1257209286
Германн
2009-11-03 03:48
2010.01.10
Кто-нибудь хочет завести себе собачку?


2-1258478697
&#8467;o&#8467;
2009-11-17 20:24
2010.01.10
Получение сообщения о нажатии клавищи