Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос по delphi

g io Ученик (143), открыт 1 неделю назад
Как сделать координатную сетку с помощью canvas на image? подскажите пожалуйста
2 ответа
kaiu Высший разум (117653) 1 неделю назад
Присвоить image тип рисунка bmp, ну а далее как и на канвасе формы, уж если тот код глядел, что я советовал (заменить Form1 на Image.Picture)
 // Нарисовать 
Form1.Canvas.Brush.Color := clWhite;
Form1.Canvas.FillRect( Form1.Canvas.ClipRect );

cx := StrToInt(leCX.Text);
cy := StrToInt(leCY.Text);

if CheckBoxCnt.Checked then
begin
cx := (Form1.ClientWidth - Panel1.Width) div 2;
cy := Form1.ClientHeight div 2;
end;


h := StrToInt(leP1.Text);
n := 25;



// рисуем сетку
for i:=1 to n do
begin
Form1.Canvas.Pen.Color := clSilver;
Form1.Canvas.MoveTo(cx - (n+1)*h, cy+i*h);
Form1.Canvas.LineTo(cx + (n+1)*h, cy+i*h);
Form1.Canvas.MoveTo(cx+i*h, cy - (n+1)*h);
Form1.Canvas.LineTo(cx+i*h, cy + (n+1)*h);

Form1.Canvas.Pen.Color := clSilver;
Form1.Canvas.MoveTo(cx - (n+1)*h, cy-i*h);
Form1.Canvas.LineTo(cx + (n+1)*h, cy-i*h);
Form1.Canvas.MoveTo(cx-i*h, cy - (n+1)*h);
Form1.Canvas.LineTo(cx-i*h, cy + (n+1)*h);

Form1.Canvas.Pen.Color := clBlack;
// размер штриха
if (i mod 10) = 0 then s := 15
else if (i mod 5) = 0 then s := 10
else s := 6;

Form1.Canvas.MoveTo( cx-h*i, cy - (s div 2) );
Form1.Canvas.LineTo( cx-h*i, cy + (s div 2) );
Form1.Canvas.MoveTo( cx+h*i, cy - (s div 2) );
Form1.Canvas.LineTo( cx+h*i, cy + (s div 2) );

Form1.Canvas.MoveTo( cx - (s div 2), cy-h*i );
Form1.Canvas.LineTo( cx + (s div 2), cy-h*i );
Form1.Canvas.MoveTo( cx - (s div 2), cy+h*i );
Form1.Canvas.LineTo( cx + (s div 2), cy+h*i );
end;
g ioУченик (143) 1 неделю назад
подскажите пожалуйста
kaiu Высший разум (117653) g io, cx := твое число и тд, я же тебе кусок с того проекта дал, Так же далее и h тоже свои числа просто задай
Wwwe Tryedsohard Ученик (118) 1 неделю назад
// draw
Form1.Canvas.Brush.Color := clWhite;
Form1.Canvas.FillRect( Form1.Canvas.ClipRect );

cx := StrToInt(leCX.Text);
cy := StrToInt(leCY.Text);

if CheckBoxCnt.Checked then
begin
cx := (Form1.ClientWidth - Panel1.Width) div 2;
cy := Form1.ClientHeight div 2;
end;


h := StrToInt(leP1.Text);
n := 25;



// grid
for i:=1 to n do
begin
Form1.Canvas.Pen.Color := clSilver;
Form1.Canvas.MoveTo(cx - (n+1)*h, cy+i*h);
Form1.Canvas.LineTo(cx + (n+1)*h, cy+i*h);
Form1.Canvas.MoveTo(cx+i*h, cy - (n+1)*h);
Form1.Canvas.LineTo(cx+i*h, cy + (n+1)*h);

Form1.Canvas.Pen.Color := clSilver;
Form1.Canvas.MoveTo(cx - (n+1)*h, cy-i*h);
Form1.Canvas.LineTo(cx + (n+1)*h, cy-i*h);
Form1.Canvas.MoveTo(cx-i*h, cy - (n+1)*h);
Form1.Canvas.LineTo(cx-i*h, cy + (n+1)*h);

Form1.Canvas.Pen.Color := clBlack;
// stroke size
if (i mod 10) = 0 then s := 15
else if (i mod 5) = 0 then s := 10
else s := 6;

Form1.Canvas.MoveTo( cx-h*i, cy - (s div 2) );
Form1.Canvas.LineTo( cx-h*i, cy + (s div 2) );
Form1.Canvas.MoveTo( cx+h*i, cy - (s div 2) );
Form1.Canvas.LineTo( cx+h*i, cy + (s div 2) );

Form1.Canvas.MoveTo( cx - (s div 2), cy-h*i );
Form1.Canvas.LineTo( cx + (s div 2), cy-h*i );
Form1.Canvas.MoveTo( cx - (s div 2), cy+h*i );
Form1.Canvas.LineTo( cx + (s div 2), cy+h*i );
end;
g ioУченик (143) 1 неделю назад
это из чата жпт?
Wwwe Tryedsohard Ученик (118) g io, нет, это алгоритм из stackoverflow
Похожие вопросы