Автор: Пользователь скрыл имя, 22 Ноября 2011 в 17:31, курсовая работа
Целью данной работы является разработка программы, позволяющей рисовать графические примитивы.
Представление данных на мониторе компьютера в графическом виде впервые было реализовано в середине 50-х годов для больших ЭВМ, применявшихся в научных и военных исследованиях. С тех пор графический способ отображения данных стал неотъемлемой принадлежностью подавляющего числа компьютерных систем, в особенности персональных.
begin
Application.MessageBox('
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(
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.
PenStyle(Form2.ComboBox1.
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:=
Picture.Canvas.Brush.Color:=
Picture.Canvas.FillRect(Rect(
PaintBox1.Canvas.
PaintBox1.Canvas.Brush.Color:=
PaintBox1.Canvas.FillRect(
end;
{режим заливки}
7:
{заливка области положения курсора текущей кистью}
Picture.Canvas.FloodFill(X,Y,
end;
end;
procedure TForm1.PaintBox1MouseUp(
Shift: TShiftState; X, Y: Integer); {действия совершаемые на плоскости рисования при отпускании кнопки мыши}
var s: String;
begin
MDown:= false;
BitMap.Assign(Picture); //запоминание изображения
N14.Enabled := true;
Picture.Canvas.Pen.Width:=
case a of
{режим линии}
1: begin
{рисование линии}
Picture.Canvas.MoveTo(X_Begin, Y_Begin);
Picture.Canvas.LineTo(X, Y);
PaintBox1.Canvas.Draw(0,0,
end;
{режим прямоугольника}
2:
{выбор координат
начала и конца диагонали
if (X - X_Begin>=0) and (Y - Y_Begin>=0) then
begin
Picture.Canvas.Rectangle(X,Y,
end
else
Picture.Canvas.Rectangle(X_
{режим окружности}
3:
{рисование окружности}
if (X - X_Begin>=0) and (Y - Y_Begin>=0) then
begin
Picture.Canvas.Ellipse(X,Y,X_
end
else
Picture.Canvas.Ellipse(X_
{режим вставки строки текста}
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,
end;
PaintBox1.Canvas.Draw(0,0,
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('
ID_YES : if
SaveP.Execute then Picture.SaveToFile(SaveP.
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,
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(
Y: Integer); {действия совершаемые на плоскости рисования при перемещении курсора мыши}
begin
StatusBar1.Panels[1].Text := IntToStr(X) + ':' + IntToStr(Y); {отображение текущих координат курсора мыши}
Picture.Canvas.Pen.Width:=
PaintBox1.Canvas.Pen.Width:=
PenStyle(Form2.ComboBox1.
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.
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_
end;
{режим окружности}
3: begin
Canvas.Draw(0,0,Picture);
Canvas.Pen.Color:=CBLine.
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_
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.