Все привет, приложу пример кода как сделать сетку из гексов, такую вот карту
Вот пример кода
procedure TForm1.DrawGeks;
var i,j,dx,dy,xm,ym:integer;
begin
xm:=7;
ym:=5;
Image1.Canvas.Pen.Width:=3;
for i:=0 to xm do for j:=0 to ym do
begin
dx:=10+180*i;
dy:=10+104*j;
Image1.Canvas.MoveTo(0+dx,52+dy);
Image1.Canvas.LineTo(30+dx,0+dy);
Image1.Canvas.LineTo(90+dx,0+dy);
Image1.Canvas.LineTo(120+dx,52+dy);
Image1.Canvas.LineTo(90+dx,104+dy);
Image1.Canvas.LineTo(30+dx,104+dy);
Image1.Canvas.LineTo(0+dx,52+dy);
end;
for i:=0 to xm-1 do for j:=0 to ym do
begin
dx:=10+180*i;
dy:=10+104*j;
Image1.Canvas.MoveTo(120+dx,52+dy);
Image1.Canvas.LineTo(180+dx,52+dy);
end;
end;
Подобраны соотношения сторон 60 and 52, очерчены наклонные и горизонтальные линии, эту процедуру можно вставить на создание или отрисовку формы, поставить Image Image1 и наслаждаться сеткой гексов.