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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2011, 16:42   #1
Nostalgia
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 44
По умолчанию построение фигур в delphi

Доброго времени суток!
При построении четырехугольника возникла проблема, в некоторых случаях он вырисовывается в виде "конфеты". в чем может быть проблема? Для изображения фигур используется компонент Image. Смотреть код жирным шрифтом снизу.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Menus;

type
  TForm1 = class(TForm)
    Image1: TImage;
    MainMenu1: TMainMenu;
    N2: TMenuItem;
    N1: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  xx,yy:integer;
  tr, rec, cer:boolean;
  Treangl:array[1..3,1..2] of integer;
  Rectangl:array[1..4,1..2] of integer;
  Elips:array[1..3,1..2] of integer;
  i:integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  xx:=round(Image1.Width/2);
  yy:=round(Image1.Height/2);
  Form1.Image1.Canvas.MoveTo(0,yy);
  Form1.Image1.Canvas.LineTo(Form1.Image1.Width,yy);//OX
  Form1.Image1.Canvas.MoveTo(xx,0);
  Form1.Image1.Canvas.LineTo(xx, Form1.Image1.Height);//OY
  //
  Form1.Image1.Canvas.MoveTo(Form1.Image1.Width,yy);
  Form1.Image1.Canvas.LineTo(Form1.Image1.Width-10, yy-7);
  Form1.Image1.Canvas.MoveTo(Form1.Image1.Width,yy);
  Form1.Image1.Canvas.LineTo(Form1.Image1.Width-10, yy+7);
  //
  Form1.Image1.Canvas.MoveTo(xx,0);
  Form1.Image1.Canvas.LineTo(xx-7,15);
  Form1.Image1.Canvas.MoveTo(xx,0);
  Form1.Image1.Canvas.LineTo(xx+7,15);
  //
  Image1.Canvas.TextOut(xx-20, yy+10, '0,0');
  Image1.Canvas.TextOut(2*xx-10, yy+15, 'X');
  Image1.Canvas.TextOut(xx-15,5,'Y');
  tr:=False;
  rec:=False;
  cer:=False;
end;

procedure TForm1.N7Click(Sender: TObject);
begin
i:=1;
tr:=True;
rec:=False;
cer:=False;
end;

procedure TForm1.N8Click(Sender: TObject);
begin
i:=1;
tr:=False;
rec:=True;
cer:=False;
end;

procedure TForm1.N9Click(Sender: TObject);
begin
i:=1;
tr:=False;
rec:=False;
cer:=True;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if tr=true then
    begin
      if i<=3 then
      begin
        Treangl[i,1]:=x;
        Treangl[i,2]:=y;
        if i=3 then
          begin
Form1.Image1.Canvas.MoveTo(Treangl[1,1], Treangl[1,2]);
Form1.Image1.Canvas.LineTo(Treangl[2,1], Treangl[2,2]);
Form1.Image1.Canvas.LineTo(Treangl[3,1], Treangl[3,2]);
Form1.Image1.Canvas.LineTo(Treangl[1,1], Treangl[1,2]);
          end;
        i:=i+1;
      end;
    end;

  if rec=true then
     begin
      if i<=4 then
      begin
        Rectangl[i,1]:=x;
        Rectangl[i,2]:=y;
        if i=4 then
          begin
Form1.Image1.Canvas.MoveTo(Rectangl[1,1], Rectangl[1,2]);
Form1.Image1.Canvas.LineTo(Rectangl[2,1], Rectangl[2,2]);
Form1.Image1.Canvas.LineTo(Rectangl[3,1], Rectangl[3,2]);
Form1.Image1.Canvas.LineTo(Rectangl[4,1], Rectangl[4,2]);
Form1.Image1.Canvas.LineTo(Rectangl[1,1], Rectangl[1,2]);


          end;
         i:=i+1;
      end;
    end;
end;


end.
Nostalgia вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построение разверток геометрических фигур Nemez Мультимедиа в Delphi 3 29.06.2010 10:52
Рисование фигур в Delphi (поворот) Алексей777911 Помощь студентам 3 29.04.2010 03:17
Построение фигур Aleksandr Microsoft Office Excel 2 22.10.2009 21:08