28 Апр

СОЗДАНИЕ ПРОСТОЙ МУЛЬТИПЛИКАЦИИ




Номер части:
Оглавление
Содержание
Журнал
Выходные данные


Науки и перечень статей вошедших в журнал:

//программа написана на языке C++Builder 6

#include <vcl.h>

#pragma hdrstop

#define IC_M Image1->Canvas->MoveTo

#define IC_L Image1->Canvas->LineTo

#define IC_B_C Image1->Canvas->Brush->Color

#define IC_P_C Image1->Canvas->Pen->Color

#define IC_P_W Image1->Canvas->Pen->Width

#define IC_F Image1->Canvas->FloodFill

#define IC_E Image1->Canvas->Ellipse

#define IC_P Image1->Canvas->Pixels

#define cW clWhite

#define cG clGreen

#define cR clRed

#include «Article_13_1.h»

//—————————————————————————

#pragma package(smart_init)

#pragma resource «*.dfm»

TForm1 *Form1;

short num=0;short H=90; short revers=1;

short Xpos=7*H/3;short Ypos=540;

//—————————————————————————

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{     }

//—————————————————————————

//рисует на поверхности формы клоуна

void __fastcall TForm1::Draw()

{Color=(TColor)cW;

switch(num)

{case 0:

//клоун

IC_P_C=(TColor)RGB(254,97,29);IC_B_C=(TColor)RGB(254,97,29);

IC_E(Xpos-2*H,Ypos-4*H,Xpos+2*H,Ypos);

//левый глаз

IC_P_C=(TColor)cW; IC_B_C=(TColor)cW;

IC_E(Xpos-H,Ypos-11*H/3,Xpos-H/6,Ypos-13*H/6);

//зрачок

IC_P_C=(TColor)0; IC_B_C=(TColor)0;

IC_E(Xpos-7*H/10,Ypos-3*H,Xpos-7*H/30,Ypos-7*H/3);

//блик

IC_P_C=(TColor)cW; IC_B_C=(TColor)cW;

IC_E(Xpos-H/2,Ypos-83*H/30,Xpos-2*H/5,Ypos-79*H/30);

//правый глаз

IC_P_C=(TColor)cW; IC_B_C=(TColor)cW;

IC_E(Xpos+H/6,Ypos-11*H/3,Xpos+H,Ypos-13*H/6);

//зрачок

IC_P_C=(TColor)0; IC_B_C=(TColor)0;

IC_E(Xpos+7*H/30,Ypos-3*H,Xpos+7*H/10,Ypos-7*H/3);

//блик

IC_P_C=(TColor)cW; IC_B_C=(TColor)cW;

IC_E(Xpos+2*H/5,Ypos-83*H/30,Xpos+H/2,Ypos-79*H/30);

//нос

IC_P_C=(TColor)cR; IC_B_C=(TColor)cR;

IC_E(Xpos-2*H/3,Ypos-7*H/3,Xpos+2*H/3,Ypos-H);

//рот, правая сторона

IC_P_C=(TColor)RGB(60,0,30); IC_B_C=(TColor)RGB(60,0,30);

Bezier(Xpos,Ypos-H/3,Xpos+H/3,Ypos-H/2,Xpos+H/6,Ypos-11*H/30);

Bezier(Xpos+H/3,Ypos-H/2,Xpos+5*H/6,Ypos-H,Xpos+17*H/30,Ypos-32*H/45);

Bezier(Xpos+5*H/6,Ypos-H,Xpos+7*H/6,Ypos-3*H/2,Xpos+16*H/15,Ypos-4*H/3);

Bezier(Xpos+7*H/6,Ypos-3*H/2,Xpos+H/3,Ypos-H,Xpos+23*H/30,Ypos-7*H/6);

Bezier(Xpos+H/3,Ypos-H,Xpos,Ypos-41*H/45,Xpos+H/6,Ypos-14*H/15);

//рот, левая сторона

Bezier(Xpos,Ypos-41*H/45,Xpos-H/3,Ypos-H,Xpos-H/6,Ypos-14*H/15);

Bezier(Xpos-H/3,Ypos-H,Xpos-7*H/6,Ypos-3*H/2,Xpos-23*H/30,Ypos-7*H/6);

Bezier(Xpos-7*H/6,Ypos-3*H/2,Xpos-5*H/6,Ypos-H,Xpos-16*H/15,Ypos-4*H/3);

Bezier(Xpos-5*H/6,Ypos-H,Xpos-H/3,Ypos-H/2,Xpos-17*H/30,Ypos-32*H/45);

Bezier(Xpos-H/3,Ypos-H/2,Xpos,Ypos-H/3,Xpos-H/6,Ypos-11*H/30);

IC_F(Xpos,Ypos-2*H/3,IC_P[Xpos][Ypos-2*H/3],fsSurface);

//цилиндр

//нижняя часть, правая сторона

IC_P_C=(TColor)RGB(19,11,34); IC_B_C=(TColor)RGB(19,11,34);

Bezier(Xpos,Ypos-58*H/15,Xpos+5*H/6,Ypos-37*H/10,Xpos+2*H/5,

Ypos-23*H/6);

Bezier(Xpos+5*H/6,Ypos-37*H/10,Xpos+H,Ypos-41*H/10,Xpos+31*H/30,

Ypos-39*H/10);

Bezier(Xpos+H,Ypos-41*H/10,Xpos,Ypos-131*H/30,Xpos+5*H/6,Ypos-43*H/10);

//нижняя часть, левая сторона

Bezier(Xpos,Ypos-131*H/30,Xpos-H,Ypos-41*H/10,Xpos-5*H/6,Ypos-43*H/10);

Bezier(Xpos-H,Ypos-41*H/10,Xpos-5*H/6,Ypos-37*H/10,Xpos-31*H/30,

Ypos-39*H/10);

Bezier(Xpos-5*H/6,Ypos-37*H/10,Xpos,Ypos-58*H/15,Xpos-2*H/5,Ypos-23*H/6);

IC_F(Xpos,Ypos-25*H/6,IC_P[Xpos][Ypos-25*H/6],fsSurface);

IC_F(Xpos,Ypos-119*H/30,IC_P[Xpos][Ypos-119*H/30],fsSurface);

//верхняя часть, правая сторона

Bezier(Xpos,Ypos-139*H/30,Xpos+2*H/3,Ypos-68*H/15,Xpos+H/3,Ypos-23*H/5);

Bezier(Xpos+2*H/3,Ypos-68*H/15,Xpos+11*H/15,Ypos-76*H/15,

Xpos+2*H/3,Ypos-29*H/6);

Bezier(Xpos+11*H/15,Ypos-76*H/15,Xpos+5*H/6,Ypos-16*H/3,

Xpos+4*H/5,Ypos-26*H/5);

Bezier(Xpos+5*H/6,Ypos-16*H/3,Xpos,Ypos-35*H/6,Xpos+H/2,Ypos-17*H/3);

//верхняя часть,левая сторона

Bezier(Xpos,Ypos-35*H/6,Xpos-5*H/6,Ypos-16*H/3,Xpos-H/2,Ypos-17*H/3);

Bezier(Xpos-5*H/6,Ypos-16*H/3,Xpos-11*H/15,Ypos-76*H/15,Xpos-4*H/5,

Ypos-26*H/5);

Bezier(Xpos-11*H/15,Ypos-76*H/15,Xpos-2*H/3,Ypos-68*H/15,Xpos-2*H/3,Ypos-29*H/6);

Bezier(Xpos-2*H/3,Ypos-68*H/15,Xpos,Ypos-139*H/30,Xpos-H/3,Ypos-23*H/5);

IC_F(Xpos,Ypos-5*H,IC_P[Xpos][Ypos-5*H],fsSurface);

IC_P_C=(TColor)RGB(84,37,84);

IC_B_C=(TColor)RGB(84,37,84);

//лента,правая сторона

Bezier(Xpos,Ypos-131*H/30,Xpos+7*H/10,Ypos-127*H/30,Xpos+H/3,

Ypos-13*H/3);

Bezier(Xpos+7*H/10,Ypos-127*H/30,Xpos+2*H/3,Ypos-68*H/15,

Xpos+2*H/3,Ypos-22*H/5);

Bezier(Xpos+2*H/3,Ypos-68*H/15,Xpos,Ypos-139*H/30,Xpos+H/3,Ypos-23*H/5);

//лента, левая сторона

Bezier(Xpos,Ypos-139*H/30,Xpos-2*H/3,Ypos-68*H/15,Xpos-H/3,Ypos-23*H/5);

Bezier(Xpos-2*H/3,Ypos-68*H/15,Xpos-7*H/10,Ypos-127*H/30,

Xpos-2*H/3,Ypos-22*H/5);

Bezier(Xpos-7*H/10,Ypos-127*H/30,Xpos,Ypos-131*H/30,Xpos-H/3,

Ypos-13*H/3);

IC_F(Xpos,Ypos-22*H/5,IC_P[Xpos][Ypos-22*H/5],fsSurface);

break;

case 1:

IC_P_C=(TColor)RGB(254,97,29);

IC_B_C=(TColor)RGB(254,97,29);

IC_E(Xpos-2*H,Ypos-4*H,Xpos+2*H,Ypos);

//левый глаз

IC_P_C=(TColor)cW; IC_B_C=(TColor)cW;

IC_E(Xpos-H,Ypos-11*H/3,Xpos-H/6,Ypos-13*H/6);

//зрачок

IC_P_C=(TColor)0; IC_B_C=(TColor)0;

IC_E(Xpos-7*H/10,Ypos-3*H,Xpos-7*H/30,Ypos-7*H/3);

//блик

IC_P_C=(TColor)cW; IC_B_C=(TColor)cW;

IC_E(Xpos-H/2,Ypos-83*H/30,Xpos-2*H/5,Ypos-79*H/30);

//правый глаз

IC_P_C=(TColor)cW; IC_B_C=(TColor)cW;

IC_E(Xpos+H/6,Ypos-11*H/3,Xpos+H,Ypos-13*H/6);

//зрачок

IC_P_C=(TColor)0; IC_B_C=(TColor)0;

IC_E(Xpos+7*H/30,Ypos-3*H,Xpos+7*H/10,Ypos-7*H/3);

//блик

IC_P_C=(TColor)cW ; IC_B_C=(TColor)cW;

IC_E(Xpos+2*H/5,Ypos-83*H/30,Xpos+H/2,Ypos-79*H/30);

//нос

IC_P_C=(TColor)cR; IC_B_C=(TColor)cR;

IC_E(Xpos-2*H/3,Ypos-7*H/3,Xpos+2*H/3,Ypos-H);

//рот, правая сторона

IC_P_C=(TColor)RGB(60,0,30);IC_B_C=(TColor)RGB(60,0,30);

Bezier(Xpos,Ypos-H/3,Xpos+H/3,Ypos-H/2,Xpos+H/6,Ypos-11*H/30);

Bezier(Xpos+H/3,Ypos-H/2,Xpos+5*H/6,Ypos-H,Xpos+17*H/30,Ypos-32*H/45);

Bezier(Xpos+5*H/6,Ypos-H,Xpos+7*H/6,Ypos-3*H/2,Xpos+16*H/15,Ypos-4*H/3);

Bezier(Xpos+7*H/6,Ypos-3*H/2,Xpos+H/3,Ypos-H,Xpos+23*H/30,Ypos-7*H/6);

Bezier(Xpos+H/3,Ypos-H,Xpos,Ypos-41*H/45,Xpos+H/6,Ypos-14*H/15);

//рот, левая сторона

Bezier(Xpos,Ypos-41*H/45,Xpos-H/3,Ypos-H,Xpos-H/6,Ypos-14*H/15);

Bezier(Xpos-H/3,Ypos-H,Xpos-7*H/6,Ypos-3*H/2,Xpos-23*H/30,Ypos-7*H/6);

Bezier(Xpos-7*H/6,Ypos-3*H/2,Xpos-5*H/6,Ypos-H,Xpos-16*H/15,Ypos-4*H/3);

Bezier(Xpos-5*H/6,Ypos-H,Xpos-H/3,Ypos-H/2,Xpos-17*H/30,Ypos-32*H/45);

Bezier(Xpos-H/3,Ypos-H/2,Xpos,Ypos-H/3,Xpos-H/6,Ypos-11*H/30);

IC_F(Xpos,Ypos-2*H/3,IC_P[Xpos][Ypos-2*H/3],fsSurface);

//шляпа

//нижняя часть, правая сторона

IC_P_C=(TColor)RGB(2,20,104);IC_B_C=(TColor)RGB(2,20,104);

Bezier(Xpos,Ypos-39*H/10,Xpos+H/2,Ypos-58*H/15,Xpos+7*H/30,

Ypos-39*H/10);

Bezier(Xpos+H/2,Ypos-58*H/15,Xpos+5*H/6,Ypos-23*H/6,Xpos+2*H/3,

Ypos-58*H/15);

Bezier(Xpos+5*H/6,Ypos-23*H/6,Xpos+16*H/15,Ypos-41*H/10,

Xpos+14*H/15,Ypos-39*H/10);

Bezier(Xpos+16*H/15,Ypos-41*H/10,Xpos+17*H/15,Ypos-13*H/3,

Xpos+11*H/10,Ypos-61*H/15);

Bezier(Xpos+17*H/15,Ypos-13*H/3,Xpos+H,Ypos-67*H/15,Xpos+16*H/15,

Ypos-22*H/5);

Bezier(Xpos+H,Ypos-67*H/15,Xpos+2*H/3,Ypos-64*H/15,Xpos+5*H/6,

Ypos-13*H/3);

Bezier(Xpos+2*H/3,Ypos-64*H/15,Xpos,Ypos-25*H/6,Xpos+H/3,Ypos-21*H/5);

//нижняя часть, левая сторона

Bezier(Xpos,Ypos-25*H/6,Xpos-2*H/3,Ypos-64*H/15,Xpos-H/3,Ypos-21*H/5);

Bezier(Xpos-2*H/3,Ypos-64*H/15,Xpos-H,Ypos-67*H/15,Xpos-5*H/6,

Ypos-13*H/3);

Bezier(Xpos-H,Ypos-67*H/15,Xpos-17*H/15,Ypos-13*H/3,Xpos-16*H/15,

Ypos-22*H/5);

Bezier(Xpos-17*H/15,Ypos-13*H/3,Xpos-16*H/15,Ypos-41*H/10,

Xpos-11*H/10,Ypos-61*H/15);

Bezier(Xpos-16*H/15,Ypos-41*H/10,Xpos-5*H/6,Ypos-23*H/6,

Xpos-14*H/15,Ypos-39*H/10);

Bezier(Xpos-5*H/6,Ypos-23*H/6,Xpos-H/2,Ypos-58*H/15,Xpos-2*H/3,

Ypos-58*H/15);

Bezier(Xpos-H/2,Ypos-58*H/15,Xpos,Ypos-39*H/10,Xpos-7*H/30,Ypos-39*H/10);

IC_F(Xpos,Ypos-41*H/10,IC_P[Xpos][Ypos-41*H/10],fsSurface);

IC_F(Xpos,Ypos-59*H/15,IC_P[Xpos][Ypos-59*H/15],fsSurface);

//верх шляпы, правая часть

Bezier(Xpos,Ypos-133*H/30,Xpos+3*H/5,Ypos-137*H/30,Xpos+H/3,

Ypos-67*H/15);

Bezier(Xpos+3*H/5,Ypos-137*H/30,Xpos+3*H/5,Ypos-5*H,Xpos+3*H/5,

Ypos-143*H/30);

Bezier(Xpos+3*H/5,Ypos-5*H,Xpos+H/2,Ypos-77*H/15,Xpos+17*H/30,

Ypos-76*H/15);

Bezier(Xpos+H/2,Ypos-77*H/15,Xpos,Ypos-5*H,Xpos+7*H/30,Ypos-151*H/30);

//верх шляпы, левая часть

Bezier(Xpos,Ypos-5*H,Xpos-H/2,Ypos-77*H/15,Xpos-7*H/30,Ypos-151*H/30);

Bezier(Xpos-H/2,Ypos-77*H/15,Xpos-3*H/5,Ypos-5*H,Xpos-17*H/30,

Ypos-76*H/15);

Bezier(Xpos-3*H/5,Ypos-5*H,Xpos-3*H/5,Ypos-137*H/30,Xpos-3*H/5,

Ypos-143*H/30);

Bezier(Xpos-3*H/5,Ypos-137*H/30,Xpos,Ypos-133*H/30,Xpos-H/3,

Ypos-67*H/15);

IC_F(Xpos,Ypos-14*H/3,IC_P[Xpos][Ypos-14*H/3],fsSurface);

//лента, правая сторона

IC_P_C=(TColor)RGB(100,45,100);IC_B_C=(TColor)RGB(100,45,100);

Bezier(Xpos,Ypos-25*H/6,Xpos+3*H/5,Ypos-127*H/30,Xpos+H/3,Ypos-21*H/5);

Bezier(Xpos+3*H/5,Ypos-127*H/30,Xpos+3*H/5,Ypos-137*H/30,

Xpos+3*H/5,Ypos-22*H/5);

Bezier(Xpos+3*H/5,Ypos-137*H/30,Xpos,Ypos-133*H/30,Xpos+H/3,

Ypos-67*H/15);

//лента, левая сторона

Bezier(Xpos,Ypos-133*H/30,Xpos-3*H/5,Ypos-137*H/30,Xpos-H/3,

Ypos-67*H/15);

Bezier(Xpos-3*H/5,Ypos-137*H/30,Xpos-3*H/5,Ypos-127*H/30,Xpos-3*H/5,

Ypos-22*H/5);

Bezier(Xpos-3*H/5,Ypos-127*H/30,Xpos,Ypos-25*H/6,Xpos-H/3,Ypos-21*H/5);

IC_F(Xpos,Ypos-13*H/3,IC_P[Xpos][Ypos-13*H/3],fsSurface);}}

//————————————————————————

//рисует кривые линии

void __fastcall TForm1::Bezier(short StartX, short StartY, short EndX,

 short EndY, short CenterX, short CenterY)

{ TPoint points[4];

points[0]=Point(StartX,StartY);

points[1]=Point(CenterX,CenterY);

points[2]=Point(EndX,EndY);

points[3]=Point(EndX,EndY);

Image1->Canvas->PolyBezier(points,3);}

//———————————————————————-

//обработка события OnTimer

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{Clear();Draw();

if ((Xpos>=Image1->Picture->Width-H) || (Xpos<=H))

revers=-revers;

Xpos+=revers*H;

num=1-num;

Clear();Draw();}

//—————————————————————————

//обработка события OnCreate для формы

void __fastcall TForm1::FormCreate(TObject *Sender)

{DoubleBuffered=true;

TRect aRect;

//закрашивание верхней части окна

aRect=Rect(0,0,Image1->Width,Ypos);

IC_B_C=(TColor)RGB(220,242,248);

Image1->Canvas->FillRect(aRect);

//закрашивание нижней части окна

aRect=Rect(0,Ypos,Image1->Width,Ypos+100);

IC_B_C=(TColor)cG;

Image1->Canvas->FillRect(aRect);

Draw();}

//—————————————————————————

//Запуск, останов

void __fastcall TForm1::BRunClick(TObject *Sender)

{Timer1->Enabled=!Timer1->Enabled;}

//—————————————————————————

//закрытие формы

void __fastcall TForm1::BCloseClick(TObject *Sender)

{Close();}

//—————————————————————————

//очистка экрана

void __fastcall TForm1::Clear()

{

IC_B_C=(TColor)RGB(220,242,248);

TRect rct=Rect(0,0,Image1->Width,Ypos);

Image1->Canvas->FillRect(rct);

}

//—————————————————————————

Список литературы:

  1. Архангельский А.Я. , Тагин М.А.

Программирование в C++Builder 6 и 2006.-М.: ООО «Бином-Пресс», 2007г.-1184с.: ил.

. Простые анимации можно использовать при создании какой–нибудь обучающей программы, чтобы описывать какие-то схемы или условные изображения механизмов, чтобы показать в движении взаимодействие их отдельных составляющих.» author=»Ананьева Марина Алексеевна» publisher=»Басаранович Екатерина» pubdate=»2016-12-18″ edition=»euroasia-science_28.04.2016_4(25)» ebook=»yes» ]