Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2012, 18:38   #1
Карина 1578
Пользователь
 
Регистрация: 13.12.2011
Сообщений: 20
Печаль Delphi,графика

Ребят, как сделать эту программу, только с помощью цикла?
Код:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
With image1.Canvas do
begin
pen.Width:=2;
pen.Color:=clBlack;
brush.Color:=clBlack;
Rectangle(50,50,350,350);    brush.Color:=clBlack;
 Rectangle (50,50,100,100);  brush.Color:=clWhite;
Rectangle (50,100,100,150);  brush.Color:=clBlack;
Rectangle (50,150,100,200);  brush.Color:=clWhite;
Rectangle (50,200,100,250);  brush.Color:=clBlack;
Rectangle (50,250,100,300);  brush.Color:=clWhite;
Rectangle (50,300,100,350);  brush.Color:=clWhite;
Rectangle (100,50,150,100);  brush.Color:=clBlack;
Rectangle (100,100,150,150);  brush.Color:=clWhite;
Rectangle (100,150,150,200); brush.Color:=clBlack;
Rectangle (100,200,150,250);  brush.Color:=clWhite;
Rectangle (100,250,150,300); brush.Color:=clBlack;
Rectangle (100,300,150,350); brush.Color:=clBlack;
Rectangle (150,50,200,100);  brush.Color:=clWhite;
Rectangle (150,100,200,150); brush.Color:=clBlack;
Rectangle (150,150,200,200);  brush.Color:=clWhite;
Rectangle (150,200,200,250);  brush.Color:=clBlack;
Rectangle (150,250,200,300);  brush.Color:=clWhite;
Rectangle (150,300,200,350);  brush.Color:=clWhite;
Rectangle (200,50,250,100);  brush.Color:=clBlack;;
Rectangle (200,100,250,150);  brush.Color:=clWhite;
Rectangle (200,150,250,200); brush.Color:=clBlack;
Rectangle (200,200,250,250);  brush.Color:=clWhite;
Rectangle (200,250,250,300);  brush.Color:=clBlack;
Rectangle (200,300,250,350);  brush.Color:=clBlack;
Rectangle (250,50,300,100);  brush.Color:=clWhite;
Rectangle (250,100,300,150);   brush.Color:=clBlack;
Rectangle (250,150,300,200);  brush.Color:=clWhite;
Rectangle (250,200,300,250);  brush.Color:=clBlack;
Rectangle (250,250,300,300);  brush.Color:=clWhite;
Rectangle (250,300,300,350);  brush.Color:=clWhite;
Rectangle (300,50,350,100);  brush.Color:=clBlack;
Rectangle (300,100,350,150);  brush.Color:=clWhite;
Rectangle (300,150,350,200); brush.Color:=clBlack;
Rectangle (300,200,350,250); brush.Color:=clWhite;
Rectangle (300,250,350,300); brush.Color:=clBlack;
Rectangle (300,300,350,350);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close;   end;  end.
Изображения
Тип файла: jpg 1.jpg (73.9 Кб, 161 просмотров)
Тип файла: jpg 2.jpg (17.8 Кб, 159 просмотров)

Последний раз редактировалось Stilet; 29.10.2012 в 18:58.
Карина 1578 вне форума Ответить с цитированием
Старый 29.10.2012, 18:52   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
const
  x0 = 20;
  y0 = 50;
  size = 50;
  count = 4;
var
  i, j: integer;
begin
  With Image1.Canvas do
  begin
    pen.Width := 2;
    pen.Color := clBlack;
    brush.Color := clBlack;
    for i := 0 to count do
    begin
      moveto(x0 + size * i, y0);
      lineto(x0 + size * i, y0 + count * size);
    end;
    for i := 0 to count do
    begin
      moveto(x0, y0 + size * i);
      lineto(x0 + count * size, y0 + size * i);
    end;
    for i := 0 to count - 1 do
      for j := 0 to count div 2 - 1 do
        fillrect(rect(x0 + (2 * j + i mod 2) * size, y0 + i * size,
            x0 + (2 * j + i mod 2 + 1) * size, y0 + (i + 1) * size));
  end;
end;
Вроде правильно рисует, но только для четного count (для нечетного лень думать).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 29.10.2012 в 18:57.
BDA вне форума Ответить с цитированием
Старый 29.10.2012, 18:58   #3
Карина 1578
Пользователь
 
Регистрация: 13.12.2011
Сообщений: 20
По умолчанию

Спасибо огромное)
Карина 1578 вне форума Ответить с цитированием
Старый 29.10.2012, 23:27   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну и мой вариант:
Код:
procedure TForm4.Button1Click(Sender: TObject);
const
  N = 8;
  OneFSize = 40;
  x0 = 60;
  y0 = 60;
var i, j :integer;
begin
  Image1.Canvas.Pen.Color := clBlack;
  for i:= 0 to N-1  do
    for j:= 0 to N-1 do begin
       if  odd(n-i+1) = odd(j) then
         Image1.Canvas.Brush.Color := clBlack
       else
         Image1.Canvas.Brush.Color := clWhite;
       Image1.Canvas.Rectangle(x0+i*OneFSize,y0+j*OneFSize, x0+(i+1)*OneFSize, y0+(j+1)*OneFSize);
    end;
end;
N можно изменять. при желании можно вообще брать его из какого-нибудь контрола с формы (например, с TEdit)


p.s. левое нижнее поле в обычной шахматной доске чёрного цвета..
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графика в Delphi Марина 666 Помощь студентам 0 05.12.2011 19:36
Графика в Delphi mickeyclair Помощь студентам 7 28.08.2011 21:10
Графика.Delphi Kventl Помощь студентам 2 17.05.2011 02:56
графика в delphi xamelion Общие вопросы Delphi 1 17.10.2010 07:17
Delphi и 3D графика chircov090993 Помощь студентам 7 31.07.2010 00:04