24.11.2014 Views

Программирование на С++ - eDrive

Программирование на С++ - eDrive

Программирование на С++ - eDrive

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

30<br />

В файле кода модуля определить статическую функцию Clear класса<br />

Shape, управляющую удалением изображения из элемента Image:<br />

void Shape::Clear () {<br />

{ Form1–>Image1–>Canvas–>Brush–>Color = clWhite;<br />

TRect myRect =<br />

Rect (0, 0, Form1–>Image1–>Width, Form1–>Image1–>Height);<br />

Form1–>Image1–>Canvas–>FillRect (myRect); }<br />

2. Производный класс-образец. В том же файле заголовка модуля объявить<br />

производный класс Circle:<br />

class Circle : Shape<br />

{ int cx, cy, rad;<br />

public:<br />

Circle (int x, int y, int r, TColor p, TColor b) :<br />

cx (x), cy (y), rad (r), Shape (p, b) {}<br />

void Draw ();<br />

void Move (int x, int y);<br />

void Fill (); };<br />

В конструкторе класса переменные x, y и r задают коорди<strong>на</strong>ты центра и радиус<br />

окружности, а p и b – цвета линии и заливки, передаваемые конструктору<br />

базового класса. Функция Draw рисует окружность, Move перемещает<br />

ее, а Fill закрашивает. В файле кода модуля <strong>на</strong>до определить эти методы<br />

класса Circle:<br />

void Circle::Draw ()<br />

{ Form1–>Image1–>Canvas–>Pen–>Color = penColor;<br />

TRect myRect = Rect (cx – rad/2, cy – rad/2, cx + rad/2, cy + rad/2);<br />

Form1–>Image1–>Canvas–>Ellipse (myRect); }<br />

void Circle::Move (int x, int y)<br />

{ cx += x; cy += y; }<br />

void Circle::Fill ()<br />

{ Form1–>Image1–>Canvas–>Brush–>Color = brushColor;<br />

Form1–>Image1–>Canvas–>FloodFill (cx, cy, penColor, fsBorder); }<br />

3. Применение класса Circle. В классе формы объявить указатель <strong>на</strong> объект<br />

базового класса:<br />

Shape *myShape;<br />

в конструкторе создать соответствующий объект:<br />

myShape = (Shape*) new Circle (100, 150, 10, clGray, clYellow);

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!