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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2010, 00:37   #1
xamelion
Пользователь
 
Регистрация: 25.12.2009
Сообщений: 11
По умолчанию графика в delphi

Здравствуйте! Помогите пожалуйста написать две программки на языку delphi.
1. Создать приложение, позволяющее рисовать окружности (по нажатию и удерживанию левой клавиши мыши) и эллипсы (по правой кнопке мыши). Предусмотреть возможность задания цвета контура и заливки, стирания окна рисования.

2. Дан файл, содержащий данные о компьютерной сети в виде матрицы связей. Создать программу, позволяющую отобразить компьютерную сеть графически. Предусмотреть возможность масштабрования отображения, отображения подписей, задания цвета и стиля рисования.
xamelion вне форума Ответить с цитированием
Старый 17.10.2010, 07:17   #2
WhiteSpirit
Пользователь
 
Регистрация: 28.05.2010
Сообщений: 82
По умолчанию

1-ая задача примерно вот так:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  IsEllipse: Boolean = False;
  IsDrawing: Boolean = False;
  stX, stY, cx, cy: Integer;
  Bmp: TBitmap;
  r: TRect;

implementation
  uses Math;
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Canvas.Pen.Color:=clBlack;
Image1.Canvas.Brush.Color:=clWhite;
Image1.Canvas.FillRect(Image1.Canvas.ClipRect);

Bmp:=TBitmap.Create;
Bmp.Width:=Image1.Width;
Bmp.Height:=Image1.Height;
Bmp.Canvas.Brush.Color:=clWhite;
Bmp.Canvas.FillRect(Bmp.Canvas.ClipRect);
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
stX:=X;
stY:=Y;
cx:=X;
cy:=Y;

IsEllipse:=([Button] * [mbLeft, mbRight] = [mbRight]);
IsDrawing:=True;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
IsDrawing:=False;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var w, h, xx, yy: Integer;
begin
if not IsDrawing then Exit;

xx:=X;
yy:=Y;
if not IsEllipse then begin
    w:=Min(Abs(xx - stX), Abs(yy - stY));
    h:=w;
    end
else begin
    w:=Abs(xx - stX);
    h:=Abs(yy - stY);
    end;

r:=Rect(stX, stY, cx, cy);
with Image1.Canvas do begin
    Image1.Canvas.CopyRect(r, Bmp.Canvas, r);
    r:=Rect(stX, stY, xx, yy);
    Bmp.Canvas.CopyRect(r, Image1.Canvas, r);
    Pen.Color:=clBlack;
    Brush.Color:=clYellow;
    Ellipse(stX, stY, stX + w * Sign(xx - stX), stY + h * Sign(yy - stY));
    end;

cx:=xx;
cy:=yy;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Bmp.Free;
end;

end.
Ну, а с цветом и очисткой, я думаю, сам справишься
WhiteSpirit вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графика в Delphi QuadroX Фриланс 5 13.05.2010 15:06
Delphi графика. ][Jlopka Общие вопросы Delphi 3 05.05.2010 14:46
Графика в Delphi novi4ok_Delphi Помощь студентам 3 16.03.2010 19:23