Графический редактор

Автор: Пользователь скрыл имя, 22 Ноября 2011 в 17:31, курсовая работа

Описание работы

Целью данной работы является разработка программы, позволяющей рисовать графические примитивы.
Представление данных на мониторе компьютера в графическом виде впервые было реализовано в середине 50-х годов для больших ЭВМ, применявшихся в научных и военных исследованиях. С тех пор графический способ отображения данных стал неотъемлемой принадлежностью подавляющего числа компьютерных систем, в особенности персональных.

Работа содержит 1 файл

пз(ред).doc

— 310.50 Кб (Скачать)

begin

Application.MessageBox('Курсовой проект студента группы ПО -104 Кузнецова А.А.','Графический редактор',MB_ICONASTERISK);

end; 

procedure TForm1.SBLineClick(Sender: TObject); //инструмент линия

begin

if not SBLine.Flat then

   begin

    SBLine.Flat := true;

    SBRect.Flat:=false;

    SBEllipse.Flat := false;

    SBText.Flat:=false;

    SBPen.Flat:=false;

    SBErase.Flat:=false;

    SBBrush.Flat:=false;

    a := 1; //выбран режим линии

   end

else

  begin

   SBLine.Flat:=false;

   a:=0; //ничего не выбрано

  end;

{состояние кнопки в зависимости от выбора других инструментов и повторного нажатия на данную кнопку}

end; 

procedure TForm1.PaintBox1MouseDown(Sender: TObject; mbLeft: TMouseButton;

  Shift: TShiftState; X, Y: Integer); {действия совершаемые на плоскости рисования при нажатии кнопки мыши}

begin

PaintBox1.Canvas.Pen.Color := CBLine.Selected; {установка цвета линии}

 Picture.Canvas.Pen.Color := CBLine.Selected;

Picture.Canvas.Brush.Color := CBBrush.Selected; {установка цвета заливки}

MDown := true;

BrushStyle(Form2.ComboBox2.ItemIndex);

PenStyle(Form2.ComboBox1.ItemIndex);

case a of

{режим линии}

  1: begin

{запоминание координат начала линии}

      X_Begin := X;

      Y_Begin := Y

     end;

{режим прямоугольника и окружности}

  2,3:

   begin

{запоминание координат левого верхнего угла прямоугольника}

    X_Begin := X;

    Y_Begin := Y;

   end;

{режим карандаша}

  5: begin

{установка текущей позиции пера в точку положения курсора}

      Picture.Canvas.MoveTo(X,Y);

      PaintBox1.Canvas.MoveTo(X,Y);

     end;

{режим ластика}

  6: begin

      R:=Rect(X-6,Y-6,X+6,Y+6); //задание размеров прямоугольника R

      Picture.Canvas.Brush.Style:=bsSolid;

      Picture.Canvas.Brush.Color:=clWhite;

      Picture.Canvas.FillRect(Rect(X-5,Y-5,X+5,Y+5)); {след от ластика на холсте}

      PaintBox1.Canvas.DrawFocusRect(R); {отрисовка прямоугольной рамки из точек размером R}

      PaintBox1.Canvas.Brush.Color:=clWhite;

      PaintBox1.Canvas.FillRect(Rect(X-5,Y-5,X+5,Y+5));

     end;

{режим заливки}

  7:

{заливка области положения курсора текущей кистью}

Picture.Canvas.FloodFill(X,Y,Picture.Canvas.Pixels[X,Y],fsSurface);

end;

end; 

procedure TForm1.PaintBox1MouseUp(Sender: TObject; mbLeft: TMouseButton;

  Shift: TShiftState; X, Y: Integer); {действия совершаемые на плоскости рисования при отпускании кнопки мыши}

var s: String;

begin

MDown:= false;

BitMap.Assign(Picture); //запоминание изображения

N14.Enabled := true;

Picture.Canvas.Pen.Width:=StrToInt(Form2.SpinEdit1.Text); {задание толщины линии}

case a of

{режим линии}

  1: begin

{рисование линии}

      Picture.Canvas.MoveTo(X_Begin, Y_Begin);

      Picture.Canvas.LineTo(X, Y);

      PaintBox1.Canvas.Draw(0,0,Picture)

     end;

{режим прямоугольника}

  2:

{выбор координат  начала и конца диагонали прямоугольника  и его рисование}

if (X - X_Begin>=0) and (Y - Y_Begin>=0) then

      begin

       Picture.Canvas.Rectangle(X,Y,X_Begin, Y_Begin);

      end

     else

       Picture.Canvas.Rectangle(X_Begin,Y_Begin,X, Y);

{режим окружности}

  3:

{рисование окружности}

if (X - X_Begin>=0) and (Y - Y_Begin>=0) then

      begin

       Picture.Canvas.Ellipse(X,Y,X_Begin, Y_Begin);

      end

     else

       Picture.Canvas.Ellipse(X_Begin,Y_Begin,X, Y);

{режим вставки строки текста}

  4: begin

      if Form4.ShowModal = mrOk then

       s := Form4.Edit1.Text;

       Picture.Canvas.Font := MyFont;

       Picture.Canvas.TextOut(X, Y, s);//вывод строки текста на холст

     end;

{режим карандаша  и ластика}

5,6: PaintBox1.Canvas.Draw(0,0,Picture);

end;

PaintBox1.Canvas.Draw(0,0,Picture);

end; 

procedure TForm1.SBRectClick(Sender: TObject); {инструмент прямоугольник}

begin

  if not SBRect.Flat then

   begin

    SBLine.Flat := false;

    SBRect.Flat:=true;

    SBEllipse.Flat := false;

    SBText.Flat:=false;

    SBPen.Flat:=false;

    SBErase.Flat:=false;

    SBBrush.Flat:=false;

    a:=2; //выбран  режим прямоугольника

   end

  else

   begin

    SBRect.Flat:=false;

    a := 0;

   end;

end; 

procedure TForm1.SBEllipseClick(Sender: TObject); {инструмент окружность}

begin

if not SBEllipse.Flat then

   begin

    SBLine.Flat := false;

    SBRect.Flat:=false;

    SBEllipse.Flat := true;

    SBText.Flat:=false;

    SBPen.Flat:=false;

    SBErase.Flat:=false;

    SBBrush.Flat:=false;

    a:=3; //выбран  режим окружности

   end

  else

   begin

    SBEllipse.Flat:=false;

    a:=0;

   end;

end; 

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); //действия при закрытии формы

begin

case Application.MessageBox('Сохранить изменения?','Сохранение',MB_YESNOCANCEL or MB_ICONWARNING) of

  ID_YES   : if SaveP.Execute then Picture.SaveToFile(SaveP.FileName); //сохрание изображения в файл

  ID_NO    : ; //продолжение процесса деинициализации

  ID_CANCEL: begin Action:=caNone;exit;end; {отмена деинициализации приложения}

 end;

BitMap.Free;   //удаление  дополнительных 

Picture.Free; //плоскостей рисования

end; 

procedure TForm1.FormPaint(Sender: TObject); {действия при перерисовке формы}

begin

PaintBox1.Width := Picture.Width;

PaintBox1.Height := Picture.Height;

PaintBox1.Canvas.Draw(0,0,Picture)

end; 

procedure TForm1.SBTextClick(Sender: TObject); {выбрана вставка строки текста}

begin

if not SBText.Flat then

   begin

    SBLine.Flat := false;

    SBRect.Flat:=false;

    SBEllipse.Flat := false;

    SBText.Flat:=true;

    SBPen.Flat:=false;

    SBErase.Flat:=false;

    SBBrush.Flat:=false;

    a:=4; //выбран режим вставки строки текста

   end

  else

   begin

    SBText.Flat:=false;

    a:=0;

   end;

end; 

procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,

  Y: Integer); {действия совершаемые на плоскости рисования при перемещении курсора мыши}

begin

StatusBar1.Panels[1].Text := IntToStr(X) + ':' + IntToStr(Y); {отображение текущих координат курсора мыши}

 Picture.Canvas.Pen.Width:=StrToInt(Form2.SpinEdit1.Text);

PaintBox1.Canvas.Pen.Width:=StrToInt(Form2.SpinEdit1.Text);

PenStyle(Form2.ComboBox1.ItemIndex);

if MDown then with PaintBox1 do {рисование осуществляется при gthtvtotybb мыши c нажатой кнопкой}

  begin

   case a of

{режим линии}

    1: begin

        Canvas.Draw(0,0,Picture);

        Canvas.MoveTo(X_Begin, Y_Begin);

        Canvas.LineTo(X, Y)

       end;

{режим прямоугольника}

    2: begin

        Canvas.Draw(0,0,Picture);

        Canvas.Pen.Color:=CBLine.Selected; //выбор цвета линии

        Canvas.Brush.Color := CBBrush.Selected; //выбор цвета заливки

        c:=Form2.ComboBox2.ItemIndex;

        case c of

         0: PaintBox1.Canvas.Brush.Style := bsClear;

         1: PaintBox1.Canvas.Brush.Style := bsSolid;

         2: PaintBox1.Canvas.Brush.Style := bsHorizontal;

         3: PaintBox1.Canvas.Brush.Style := bsVertical;

         4: PaintBox1.Canvas.Brush.Style := bsFDiagonal;

         5: PaintBox1.Canvas.Brush.Style := bsBDiagonal;

         6: PaintBox1.Canvas.Brush.Style := bsCross;

         7: PaintBox1.Canvas.Brush.Style := bsDiagCross;

        end;

        b:=Form2.ComboBox1.ItemIndex;

        case b of

         0: PaintBox1.Canvas.Pen.Style := psClear;

         1: PaintBox1.Canvas.Pen.Style := psSolid;

         2: PaintBox1.Canvas.Pen.Style := psDash;

         3: PaintBox1.Canvas.Pen.Style := psDot;

         4: PaintBox1.Canvas.Pen.Style := psDashDot;

         5: PaintBox1.Canvas.Pen.Style := psDashDotDot;

        end;

        Canvas.Rectangle(X_Begin,Y_Begin,X,Y);

       end;

{режим окружности}

    3: begin

        Canvas.Draw(0,0,Picture);

        Canvas.Pen.Color:=CBLine.Selected;

        Canvas.Brush.Color := CBBrush.Selected;

        c:=Form2.ComboBox2.ItemIndex;

        case c of

         0: PaintBox1.Canvas.Brush.Style := bsClear;

         1: PaintBox1.Canvas.Brush.Style := bsSolid;

         2: PaintBox1.Canvas.Brush.Style := bsHorizontal;

         3: PaintBox1.Canvas.Brush.Style := bsVertical;

         4: PaintBox1.Canvas.Brush.Style := bsFDiagonal;

         5: PaintBox1.Canvas.Brush.Style := bsBDiagonal;

         6: PaintBox1.Canvas.Brush.Style := bsCross;

         7: PaintBox1.Canvas.Brush.Style := bsDiagCross;

        end;

        b:=Form2.ComboBox1.ItemIndex;

        case b of

         0: PaintBox1.Canvas.Pen.Style := psClear;

         1: PaintBox1.Canvas.Pen.Style := psSolid;

         2: PaintBox1.Canvas.Pen.Style := psDash;

         3: PaintBox1.Canvas.Pen.Style := psDot;

         4: PaintBox1.Canvas.Pen.Style := psDashDot;

         5: PaintBox1.Canvas.Pen.Style := psDashDotDot;

        end;

        Canvas.Ellipse(X_Begin,Y_Begin,X,Y);

       end;

{режим карандаша}

    5: begin

        Picture.Canvas.Pen.Color := CBLine.Selected;

        Picture.Canvas.LineTo(X,Y);

        Canvas.Pen.Color := CBLine.Selected;

        Canvas.LineTo(X,Y);

       end;

{режим ластика}

    6: begin

        PaintBox1.Canvas.DrawFocusRect(R);

Информация о работе Графический редактор