Программирование на С++ - eDrive
Программирование на С++ - eDrive
Программирование на С++ - eDrive
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);