Witam,
muszę narysować w delphi sieć heksagonalną, ale nie za bardzo mi to wychodzi. Mam to do zrobienia na wczoraj więc prosiłbym o pomoc :) Z góry dzięki.
Dzięki za linka, ale nie przydał się za bardzo ;) Poradziłem sobie już, pewnie najbardziej łopatologicznym i pracochłonnym sposobem, ale najważniejsze, że działa :) Może kiedyś komuś się przyda, więc podaję kod:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
Button1: TButton;
Button2: TButton;
Timer1: TTimer;
procedure rysujHex ();
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Y : Integer;
X : Integer;
end;
var
Form1: TForm1;
Y : Integer;
implementation
{$R *.dfm}
procedure TForm1.rysujHex ();
var
Z : Integer;
begin
///////////////////////////linie glowne
Image1.Canvas.Pen.Color:=clBlue;
X:=0;
Y:=0;
repeat
X:=0;
repeat
Image1.Canvas.MoveTo(X,Y);
Image1.Canvas.LineTo(X+20,Y);
X:=X+80;
until X>=Image1.Width;
Y:=Y+40;
until Y>=Image1.Height;
///////////////////////////srodkowe linie
X:=40;
Y:=20;
repeat
X:=40;
repeat
Image1.Canvas.MoveTo(X,Y);
Image1.Canvas.LineTo(X+20,Y);
X:=X+80;
until X>=Image1.Width;
Y:=Y+40;
until Y>=Image1.Height;
///////////////////////////prawa gora
X:=20;
Y:=0;
Z:=0;
repeat
repeat
Y:=Z;
Image1.Canvas.MoveTo(X, Y);
Image1.Canvas.LineTo(X+20, Y+20);
X:=X+80;
until X>=Image1.Width;
X:=20;
Z:=Y+40;
until Y>=Image1.Height;
///////////////////////////lewa góra
X:=80;
Y:=0;
Z:=0;
repeat
repeat
Y:=Z;
Image1.Canvas.MoveTo(X, Y);
Image1.Canvas.LineTo(X-20, Y+20);
X:=X+80;
until X>=Image1.Width;
X:=80;
Z:=Y+40;
until Y>=Image1.Height;
///////////////////////////prawy dol
X:=20;
Y:=40;
Z:=40;
repeat
repeat
Y:=Z;
Image1.Canvas.MoveTo(X,Y);
Image1.Canvas.LineTo(X+20,Y-20);
X:=X+80;
until X>=Image1.Width;
X:=20;
Z:=Y+40;
until Y>=Image1.Height;
///////////////////////////lewy dol
X:=60;
Y:=20;
Z:=20;
repeat
repeat
Y:=Z;
Image1.Canvas.MoveTo(X,Y);
Image1.Canvas.LineTo(X+20,Y+20);
X:=X+80;
until X>=Image1.Width;
X:=60;
Z:=Y+40;
until Y>=Image1.Height;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
rysujHex();
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
rysujHex();
//Y:=Y+10;
end;
end.
Witam,
To mi wygląda na heksagon przyduszony :-/ (nie ma równych boków).
Masakra!
Pzdr
Witam,
To mi wygląda na heksagon przyduszony :-/ (nie ma równych boków).
Masakra!
Pzdr
tu masz wzory na pozycje wierzchołków - powinno pomóc :) http://www.rdwarf.com/users/wwonko/hex/
Witam,
To mi wygląda na heksagon przyduszony :-/ (nie ma równych boków).
Masakra!Pzdr
A czy ja napisałem gdzieś, że to ma być sześcian foremny? Z resztą jak Ci się nie podoba nie musisz korzystać z kodu, ja to robiłem na szybko bo miałem projek do oddania na zaliczenie, więc nie zagłębiałem się specjalnie w równość boków, która w tym wypadku była najmniej istotna...
pozdr