![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как нарисовать круг в делфи по пикселям?
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]Было бы.
Если бы не было так грустно.