Е. Жақсылықов мультимедиалық ЖҮйелерді жобалау және қҰрастыру


Графикалық құралдарды қолдану



бет2/9
Дата21.07.2016
өлшемі3.19 Mb.
#214513
1   2   3   4   5   6   7   8   9

4.2 Графикалық құралдарды қолдану


Кластар құрылымы

Delphi ортасында құрылған қосымшалар сурет салу Canvas (кенеп, селдір мата, мата) қасиетіне ие компоненттерді қолдану арқасында ғана жүзеге асырылады. Әдетте, бұл қасиеттерге TForm, TStringGrid, TImage, TPrinter компоненттері ие. TCanvas және қалған барлық графикалық кластар үшін TPersistent класы арғы тегі болып табылады. TPersistent класының ұрпақтары:

1) құралдар класын тудыратын TGraphicsObject класы;

2) сурет салу әдістері мен құралдары бар TСanvas класы;

3) файлдардың өз форматы бар бейнелердің төрт класын {TBitmap, TIcon, Tmetafile, TJPEGImage} тудыратын TGraphic класы;

4) TGraphic класының, дәлірек айтқанда оның ұрпақтарының қондырмасы болатын TPicture класы. Оның TGraphic өрісінде TBitmap, Ticon, TMetafile немесе TJPEGImage болуы мүмкін.


Мысал 5. Графиканы бағдарламалау. Түсті, қылқалам қалыңдығын және құюды таңдау мүмкіндіктері бар графикалық редактор бағдарламасын жасап шығарыңдар.

Тапсырманы орындау технологиясы:




компоненттер


Компоненттер парағы

Қасиеттердің өзгерулері

Image1

Additional




ColorDialog1

Dialogs




SpinEditx: SpinButton


Samples

Name: SpinEditx

Events бетінде – OnChange: SpinEditxChange



SpeedButton 1

SpeedButton2

SpeedButton4


Additional

Батырмаға арналған суреттер алдын ала paint- редакторында салынып, Glyph қасиеті арқылы ашылады.

unit U2;


interface

uses


Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Buttons, StdCtrls, Spin, ExtCtrls, Menus;

type

TForm1 = class(TForm)



Image1: TImage;

SpinEditx: TSpinEdit;

SpeedButton1: TSpeedButton;

SpeedButton2: TSpeedButton;

SpeedButton4: TSpeedButton;

ColorDialog1: TColorDialog;

procedure SpinEditxChange(Sender: TObject);

procedure SpeedButton1Click(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure SpeedButton2Click(Sender: TObject);

procedure SpeedButton4Click(Sender: TObject);

procedure Drawgr;

private

{ Private declarations }



public

{ Public declarations }

end;

var


Form1: TForm1;

i1,i2,j1,j2: integer;

implementation

{$R *.dfm}

procedure TForm1.SpinEditxChange(Sender: TObject);

begin


image1.canvas.pen.Width:=SpinEditx.value;

drawgr;


end;

procedure TForm1.SpeedButton1Click(Sender: TObject);

begin

if colordialog1.execute then



begin

image1.Canvas.Brush.Color:=ColorDialog1.Color;

drawgr;

end;


end;

procedure TForm1.DrawGr;

var x:integer;

begin


with Image1.canvas do

begin


Image1.canvas.Ellipse(10,10,100,100);

end;


end;

procedure TForm1.SpeedButton4Click(Sender: TObject);

begin

form1.Close;



end;

procedure TForm1.FormActivate(Sender: TObject);

begin

with image1 do



begin

i1:=0; j1:=0;

i2:=Width;

j2:=Height;

Drawgr; end;

end;


procedure TForm1.SpeedButton2Click(Sender: TObject);

begin


if colordialog1.execute then

begin


image1.Canvas.Pen.Color:=ColorDialog1.Color;

DrawGr;


end;

end;


end.
М
ысал
6. Нүктенің фигураға тиесілігін анықтайтын бағдарламаны құру.
Тапсырманы орындау технологиясы:

unit unMain;

interface

uses


Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;

type

TForm1 = class(TForm)



Edit1: TEdit;

Edit2: TEdit;

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Label3: TLabel;

procedure FormPaint(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure ClearCanvas;

private


Center : TPoint;

public


{ Public declarations }

end;
var

Form1: TForm1;
implementation
{$R *.DFM}

procedure Tform1.ClearCanvas;

begin

Center := Point(form1.Width div 2, form1.Height div 2);



Canvas.Brush.Color := clHighlightText;

Canvas.FillRect(Canvas.ClipRect);

Canvas.Pen.Color := clRed;

{----------тілшелерді саламыз------------------------------}

Canvas.MoveTo(form1.Width div 2 - 5, 15);

Canvas.LineTo(form1.Width div 2, 10);

Canvas.LineTo(form1.Width div 2 + 5, 15);

canvas.TextOut(form1.Width div 2 + 5, 15, ' ось Y');

Canvas.MoveTo(form1.Width - 25, form1.Height div 2 - 5 );

Canvas.LineTo(form1.Width - 20, form1.Height div 2);

Canvas.LineTo(form1.Width - 25, form1.Height div 2 + 5);

Canvas.TextOut(form1.Width - 45, form1.Height div 2 + 5, ' ось X');

Canvas.TextOut(Center.X + 3, Center.Y + 3, '0');

Canvas.TextOut(Center.X - 105, Center.Y + 3, '-1');

Canvas.TextOut(Center.X + 3, Center.Y - 210, '2');

Canvas.TextOut(Center.X + 96, Center.Y + 3, '1');

{------------------------------------------------------}

Canvas.MoveTo(form1.Width div 2, 10);

Canvas.lineTo(form1.Width div 2, form1.Height - 30 );

Canvas.MoveTo(10, form1.Height div 2);

Canvas.LineTo(form1.Width - 20, form1.Height div 2);

Canvas.Pen.Color := clBlack;

Canvas.MoveTo(Center.X - 100, Center.Y);

Canvas.LineTo(Center.X, Center.Y - 200);

Canvas.LineTo(Center.X + 100, Center.Y);

Canvas.LineTo(Center.X - 100,Center.Y);

end;

procedure TForm1.FormPaint(Sender: TObject);



begin

ClearCanvas;

end;

procedure TForm1.Button1Click(Sender: TObject);



var ptX, ptY, Y: Integer;

begin


try

ptX := Trunc(StrToFloat(Edit1.Text)*100);

except

MessageDlg(' X-тің координатасы дұрыс емес енгізілген !', mtError, [mbOK], 0);



Edit1.Text := '';

Edit1.SetFocus;

exit;

end;


try

ptY:= Trunc(StrToFloat(Edit2.Text)*100);

except

MessageDlg('Y-тің координатасы дұрыс емес енгізілген!', mtError, [mbOK], 0);



Edit2.Text := '';

Edit2.SetFocus;

exit;

end;


Canvas.Brush.Color := clBlack;

Canvas.Ellipse(Center.X + ptX - 3,Center.Y - ptY - 3,Center.X + ptX + 3,Center.Y - ptY + 3);

if ptX <= 0 then

begin


Y := 2*ptX + 200;

if ptY<=Y then Label3.Caption:= ('+Edit1.Text+':'+Edit2.Text+') нүктесі фигураға тиесілі !'

else Label3.Caption:='('+Edit1.Text+':'+Edit2.Text+') нүктесі фигураға тиесілі емес!';

end;


if ptX > 0 then

begin


Y := -2*ptX + 200;

if ptY <= Y then Label3.Caption:='('+Edit1.Text+':'+Edit2.Text+') нүктесі фигураға тиесілі!'

else Label3.Caption:='('+Edit1.Text+':'+Edit2.Text+') нүктесі фигураға тиесілі емес !';

end;


end;

end.




Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет