четверг, 4 мая 2017 г.

Полярные координаты ( С++ )

Программа "Полярные координаты" на С++

Я расскажу как сделать программу, в которой мы сможем построить различные фигуры с помощью кординатно прямой. Так же мы будем использовать меню для удобности.






Приступим : 

Заходим в VisualStudio и создаем планшетку со стандартными настроками и называем ее Programm

Заходим в Solution Explorer и там открывают HeaderFiles, а в ней ProgrammDlg.h
Там вписываем этот блок:

private:

HPEN hPenOxy, hOldPen;
HFONT hold, hNew, hbk;
HBRUSH m, oldm;
COLORREF cf, ck, c[25];

CPen d, oldd;
CBitmap pic;
CRect rc, w, kw[12];

CString ms, t, z;
 
int x1, y1, x2, y2, x3, y3, x4, y4;

int Matrix[50][50];
int RH, RW, k, i, j, cx, cy, dx, dy;
bool fg;



Теперь заходим в Resource View - Dialog _ ПКМ по планшетке - Add Resourse - Menu - New


Теперь открываем планшетку, после чего заходим в Properties и в пункте Menu выбираем только что созданное нами меню. Теперь заходим в само меню, где на каждой строчке в рядок набираем Polar01 и до Polar07. Нажимаю ПКМ на каждую строчку выбираем обработчик событий Add Event Handler.
Теперь в каждую функцию соответственно номеру вставляем это. Обращаю внимание! СООТВЕТСТВЕННО НОМЕРУ! Вот текст:


=============================OnPolar1()



CClientDC dc(this);
GetClientRect(&rc);
hNew=CreateFont(28,0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,L"Times New Roman Cyr"); 
hold=(HFONT)SelectObject(dc,hNew);
dc.FillSolidRect(&rc,RGB(255,255,255));
cf=RGB(255,255,255);
c=RGB(50,70,120);
SetTextColor(dc,c);
SetBkColor(dc,cf);
msg.Format(L"Полярная");
TextOutW(dc,rc.left+50,rc.bottom-450,msg,msg.GetLength());
msg.Format(L"система");
TextOutW(dc,rc.left+50,rc.bottom-420,msg,msg.GetLength());
msg.Format(L"координат");
TextOutW(dc,rc.left+50,rc.bottom-390,msg,msg.GetLength());

COLORREF crFunction = RGB(0,190,0);//цвет графика
COLORREF crAxes = RGB(89,89,250);//цвет осей (линий)
COLORREF crMarks = RGB(0,0,160);//цвет отметок на шкале
COLORREF crXYLines = RGB(140,70,0);//название осей
COLORREF crDeleniya = RGB(0,0,165);//цвет текста


HPEN hPenOxy,hOldPen;
hPenOxy=CreatePen(PS_SOLID,2,crAxes);//создаем кисть цветом "crOxy"
hOldPen = (HPEN)SelectObject(dc,hPenOxy);

SetTextColor(dc,crAxes);//устанавливаем цвет текста
int cxClient,cyClient;
cyClient = rc.bottom;//высота
cxClient = rc.right;//ширина
//выводим ось OX
MoveToEx(dc,0,cyClient/2,NULL);
LineTo(dc,cxClient,cyClient/2);
//выводим стрелочку
MoveToEx(dc,cxClient,cyClient/2,NULL);
LineTo(dc,cxClient-cxClient/100*2,cyClient/2-cyClient/100*2);
MoveToEx(dc,cxClient,cyClient/2,NULL);
LineTo(dc,cxClient-cxClient/100*2,cyClient/2+cyClient/100*2);
//рисуем ось OY
MoveToEx(dc,cxClient/2,00,NULL);
LineTo(dc,cxClient/2,cyClient);
//выводим стрелочку
MoveToEx(dc,cxClient/2,0,NULL);
LineTo(dc,cxClient/2-cxClient/100*2,cyClient/100*2);
MoveToEx(dc,cxClient/2,0,NULL);
LineTo(dc,cxClient/2+cxClient/100*2,cyClient/100*2);
//название осей
SetTextColor(dc,crXYLines);
TextOut(dc,cxClient-cxClient/100*2-30,cyClient/2+cyClient/100*2,L"OX",2);
TextOut(dc,cxClient/2+cxClient/100*2.5,cyClient/200,L"OY",2);
TextOut(dc,cxClient-cxClient/100*2-120,cyClient/200+140,L"R=200",5);

// рисуем график y=sin(x)

double x,y;//значений функций
int width,height;//высота, ширина делений

//ширину области деленим на колличество делений
width=cxClient/12;
height=cyClient/4;

double r,f;
    r=200;
f=0;
do 
{
x=r*cos(f);
y=r*sin(f);
SetPixel(dc,x+cxClient/2,y+cyClient/2,crFunction);
f+=0.01;
} while(f<=360);


SelectObject(dc,hOldPen);
DeleteObject(hPenOxy);
DeleteObject(hNew);
hold=(HFONT)SelectObject(dc,hbk);




=============================OnPolar2()


CClientDC dc(this);
GetClientRect(&rc);
hNew=CreateFont(28,0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,L"Times New Roman Cyr"); 
hold=(HFONT)SelectObject(dc,hNew);
dc.FillSolidRect(&rc,RGB(255,255,255));
cf=RGB(255,255,255);
c=RGB(50,70,120);
SetTextColor(dc,c);
SetBkColor(dc,cf);
msg.Format(L"Полярная");
TextOutW(dc,rc.left+50,rc.bottom-450,msg,msg.GetLength());
msg.Format(L"система");
TextOutW(dc,rc.left+50,rc.bottom-420,msg,msg.GetLength());
msg.Format(L"координат");
TextOutW(dc,rc.left+50,rc.bottom-390,msg,msg.GetLength());

COLORREF crFunction = RGB(230,0,0);//цвет графика
COLORREF crAxes = RGB(89,89,250);//цвет осей (линий)
COLORREF crMarks = RGB(0,0,160);//цвет отметок на шкале
COLORREF crXYLines = RGB(140,70,0);//название осей
COLORREF crDeleniya = RGB(0,0,165);//цвет текста


HPEN hPenOxy,hOldPen;
hPenOxy=CreatePen(PS_SOLID,2,crAxes);//создаем кисть цветом "crOxy"
hOldPen = (HPEN)SelectObject(dc,hPenOxy);

SetTextColor(dc,crAxes);//устанавливаем цвет текста
int cxClient,cyClient;
cyClient = rc.bottom;//высота
cxClient = rc.right;//ширина
//выводим ось OX
MoveToEx(dc,0,cyClient/2,NULL);
LineTo(dc,cxClient,cyClient/2);
//выводим стрелочку
MoveToEx(dc,cxClient,cyClient/2,NULL);
LineTo(dc,cxClient-cxClient/100*2,cyClient/2-cyClient/100*2);
MoveToEx(dc,cxClient,cyClient/2,NULL);
LineTo(dc,cxClient-cxClient/100*2,cyClient/2+cyClient/100*2);
//рисуем ось OY
MoveToEx(dc,cxClient/2,00,NULL);
LineTo(dc,cxClient/2,cyClient);
//выводим стрелочку
MoveToEx(dc,cxClient/2,0,NULL);
LineTo(dc,cxClient/2-cxClient/100*2,cyClient/100*2);
MoveToEx(dc,cxClient/2,0,NULL);
LineTo(dc,cxClient/2+cxClient/100*2,cyClient/100*2);
//название осей
SetTextColor(dc,crXYLines);
TextOut(dc,cxClient-cxClient/100*2-30,cyClient/2+cyClient/100*2,L"OX",2);
TextOut(dc,cxClient/2+cxClient/100*2.5,cyClient/200,L"OY",2);
TextOut(dc,cxClient-cxClient/100*2-180,cyClient/200+110,L"спираль",7);
TextOut(dc,cxClient-cxClient/100*2-180,cyClient/200+140,L"\"АРХИМЕДА\"",10);

// рисуем график y=sin(x)

double x,y;//значений функций
int width,height;//высота, ширина делений

//ширину области деленим на колличество делений
width=cxClient/12;
height=cyClient/4;

double r,f;
    r=0;
f=0.1;
do 
{
r+=0.05;
x=r*cos(f);
y=r*sin(f);
SetPixel(dc,x+cxClient/2,y+cyClient/2,crFunction);
f+=0.01;
} while(f<=360);

SelectObject(dc,hOldPen);
DeleteObject(hPenOxy);
DeleteObject(hNew);
hold=(HFONT)SelectObject(dc,hbk);


=============================OnPolar3()


CClientDC dc(this);
GetClientRect(&rc);
hNew=CreateFont(28,0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,L"Times New Roman Cyr"); 
hold=(HFONT)SelectObject(dc,hNew);
dc.FillSolidRect(&rc,RGB(255,255,255));
cf=RGB(255,255,255);
c=RGB(50,70,120);
SetTextColor(dc,c);
SetBkColor(dc,cf);
msg.Format(L"Полярная");
TextOutW(dc,rc.left+50,rc.bottom-450,msg,msg.GetLength());
msg.Format(L"система");
TextOutW(dc,rc.left+50,rc.bottom-420,msg,msg.GetLength());
msg.Format(L"координат");
TextOutW(dc,rc.left+50,rc.bottom-390,msg,msg.GetLength());

COLORREF crFunction = RGB(250,100,50);//цвет графика
COLORREF crAxes = RGB(89,89,250);//цвет осей (линий)
COLORREF crMarks = RGB(0,0,160);//цвет отметок на шкале
COLORREF crXYLines = RGB(140,70,0);//название осей
COLORREF crDeleniya = RGB(0,0,165);//цвет текста


HPEN hPenOxy,hOldPen;
hPenOxy=CreatePen(PS_SOLID,2,crAxes);//создаем кисть цветом "crOxy"
hOldPen = (HPEN)SelectObject(dc,hPenOxy);

SetTextColor(dc,crAxes);//устанавливаем цвет текста
int cxClient,cyClient;
cyClient = rc.bottom;//высота
cxClient = rc.right;//ширина
//выводим ось OX
MoveToEx(dc,0,cyClient/2,NULL);
LineTo(dc,cxClient,cyClient/2);
//выводим стрелочку
MoveToEx(dc,cxClient,cyClient/2,NULL);
LineTo(dc,cxClient-cxClient/100*2,cyClient/2-cyClient/100*2);
MoveToEx(dc,cxClient,cyClient/2,NULL);
LineTo(dc,cxClient-cxClient/100*2,cyClient/2+cyClient/100*2);
//рисуем ось OY
MoveToEx(dc,cxClient/2,00,NULL);
LineTo(dc,cxClient/2,cyClient);
//выводим стрелочку
MoveToEx(dc,cxClient/2,0,NULL);
LineTo(dc,cxClient/2-cxClient/100*2,cyClient/100*2);
MoveToEx(dc,cxClient/2,0,NULL);
LineTo(dc,cxClient/2+cxClient/100*2,cyClient/100*2);
//название осей
SetTextColor(dc,crXYLines);
TextOut(dc,cxClient-cxClient/100*2-30,cyClient/2+cyClient/100*2,L"OX",2);
TextOut(dc,cxClient/2+cxClient/100*2.5,cyClient/200,L"OY",2);
TextOut(dc,cxClient-cxClient/100*2-120,cyClient/200+140,L"k=7",3);

// рисуем график y=sin(x)

double x,y;//значений функций
int width,height;//высота, ширина делений

//ширину области деленим на колличество делений
width=cxClient/12;
height=cyClient/4;

double r,f;
int a,k;
a=200;
k=7;
    r=200;
f=0.1;
do 
{
r=a*sin(k*f);
x=r*cos(f);
y=r*sin(f);
SetPixel(dc,x+cxClient/2,y+cyClient/2,crFunction);
f+=0.01;
} while(f<=360);


SelectObject(dc,hOldPen);
DeleteObject(hPenOxy);
DeleteObject(hNew);
hold=(HFONT)SelectObject(dc,hbk);


=============================OnPolar4()


// диалоговое окно CProgramDlg
class CProgramDlg : public CDialog
{
// Создание
public:
CProgramDlg(CWnd* pParent = NULL); // стандартный конструктор

// Данные диалогового окна
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_PROGRAM_DIALOG };
#endif

protected:
virtual void DoDataExchange(CDataExchange* pDX); // поддержка DDX/DDV


// Реализация
protected:
HICON m_hIcon;

CClientDC dc(this);
GetClientRect(&rc);
hNew=CreateFont(28,0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,L"Times New Roman Cyr"); 
hold=(HFONT)SelectObject(dc,hNew);
dc.FillSolidRect(&rc,RGB(255,255,255));
cf=RGB(255,255,255);
c=RGB(50,70,120);
SetTextColor(dc,c);
SetBkColor(dc,cf);
msg.Format(L"Полярная");
TextOutW(dc,rc.left+50,rc.bottom-450,msg,msg.GetLength());
msg.Format(L"система");
TextOutW(dc,rc.left+50,rc.bottom-420,msg,msg.GetLength());
msg.Format(L"координат");
TextOutW(dc,rc.left+50,rc.bottom-390,msg,msg.GetLength());

COLORREF crFunction = RGB(250,100,50);//цвет графика
COLORREF crAxes = RGB(89,89,250);//цвет осей (линий)
COLORREF crMarks = RGB(0,0,160);//цвет отметок на шкале
COLORREF crXYLines = RGB(140,70,0);//название осей
COLORREF crDeleniya = RGB(0,0,165);//цвет текста


HPEN hPenOxy,hOldPen;
hPenOxy=CreatePen(PS_SOLID,2,crAxes);//создаем кисть цветом "crOxy"
hOldPen = (HPEN)SelectObject(dc,hPenOxy);

SetTextColor(dc,crAxes);//устанавливаем цвет текста
int cxClient,cyClient;
cyClient = rc.bottom;//высота
cxClient = rc.right;//ширина
//выводим ось OX
MoveToEx(dc,0,cyClient/2,NULL);
LineTo(dc,cxClient,cyClient/2);
//выводим стрелочку
MoveToEx(dc,cxClient,cyClient/2,NULL);
LineTo(dc,cxClient-cxClient/100*2,cyClient/2-cyClient/100*2);
MoveToEx(dc,cxClient,cyClient/2,NULL);
LineTo(dc,cxClient-cxClient/100*2,cyClient/2+cyClient/100*2);
//рисуем ось OY
MoveToEx(dc,cxClient/2,00,NULL);
LineTo(dc,cxClient/2,cyClient);
//выводим стрелочку
MoveToEx(dc,cxClient/2,0,NULL);
LineTo(dc,cxClient/2-cxClient/100*2,cyClient/100*2);
MoveToEx(dc,cxClient/2,0,NULL);
LineTo(dc,cxClient/2+cxClient/100*2,cyClient/100*2);
//название осей
SetTextColor(dc,crXYLines);
TextOut(dc,cxClient-cxClient/100*2-30,cyClient/2+cyClient/100*2,L"OX",2);
TextOut(dc,cxClient/2+cxClient/100*2.5,cyClient/200,L"OY",2);
TextOut(dc,cxClient-cxClient/100*2-120,cyClient/200+140,L"k=3",3);

// рисуем график y=sin(x)

double x,y;//значений функций
int width,height;//высота, ширина делений

//ширину области деленим на колличество делений
width=cxClient/12;
height=cyClient/4;

double r,f;
int a,k;
a=200;
k=3;
    r=200;
f=0.1;
do 
{
r=a*sin(k*f);
x=r*cos(f);
y=r*sin(f);
SetPixel(dc,x+cxClient/2,y+cyClient/2,crFunction);
f+=0.01;
} while(f<=360);


SelectObject(dc,hOldPen);
DeleteObject(hPenOxy);
DeleteObject(hNew);
hold=(HFONT)SelectObject(dc,hbk);


=============================OnPolar5()


CClientDC dc(this);
GetClientRect(&rc);
hNew=CreateFont(28,0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,L"Times New Roman Cyr"); 
hold=(HFONT)SelectObject(dc,hNew);
dc.FillSolidRect(&rc,RGB(255,255,255));
cf=RGB(255,255,255);
c=RGB(50,70,120);
SetTextColor(dc,c);
SetBkColor(dc,cf);
msg.Format(L"Полярная");
TextOutW(dc,rc.left+50,rc.bottom-450,msg,msg.GetLength());
msg.Format(L"система");
TextOutW(dc,rc.left+50,rc.bottom-420,msg,msg.GetLength());
msg.Format(L"координат");
TextOutW(dc,rc.left+50,rc.bottom-390,msg,msg.GetLength());

COLORREF crFunction = RGB(250,100,50);//цвет графика
COLORREF crAxes = RGB(89,89,250);//цвет осей (линий)
COLORREF crMarks = RGB(0,0,160);//цвет отметок на шкале
COLORREF crXYLines = RGB(140,70,0);//название осей
COLORREF crDeleniya = RGB(0,0,165);//цвет текста


HPEN hPenOxy,hOldPen;
hPenOxy=CreatePen(PS_SOLID,2,crAxes);//создаем кисть цветом "crOxy"
hOldPen = (HPEN)SelectObject(dc,hPenOxy);

SetTextColor(dc,crAxes);//устанавливаем цвет текста
int cxClient,cyClient;
cyClient = rc.bottom;//высота
cxClient = rc.right;//ширина
//выводим ось OX
MoveToEx(dc,0,cyClient/2,NULL);
LineTo(dc,cxClient,cyClient/2);
//выводим стрелочку
MoveToEx(dc,cxClient,cyClient/2,NULL);
LineTo(dc,cxClient-cxClient/100*2,cyClient/2-cyClient/100*2);
MoveToEx(dc,cxClient,cyClient/2,NULL);
LineTo(dc,cxClient-cxClient/100*2,cyClient/2+cyClient/100*2);
//рисуем ось OY
MoveToEx(dc,cxClient/2,00,NULL);
LineTo(dc,cxClient/2,cyClient);
//выводим стрелочку
MoveToEx(dc,cxClient/2,0,NULL);
LineTo(dc,cxClient/2-cxClient/100*2,cyClient/100*2);
MoveToEx(dc,cxClient/2,0,NULL);
LineTo(dc,cxClient/2+cxClient/100*2,cyClient/100*2);
//название осей
SetTextColor(dc,crXYLines);
TextOut(dc,cxClient-cxClient/100*2-30,cyClient/2+cyClient/100*2,L"OX",2);
TextOut(dc,cxClient/2+cxClient/100*2.5,cyClient/200,L"OY",2);
TextOut(dc,cxClient-cxClient/100*2-120,cyClient/200+140,L"k=5",3);

// рисуем график y=sin(x)

double x,y;//значений функций
int width,height;//высота, ширина делений

//ширину области деленим на колличество делений
width=cxClient/12;
height=cyClient/4;

double r,f;
int a,k;
a=200;
k=5;
    r=200;
f=0.1;
do 
{
r=a*sin(k*f);
x=r*cos(f);
y=r*sin(f);
SetPixel(dc,x+cxClient/2,y+cyClient/2,crFunction);
f+=0.01;
} while(f<=360);


SelectObject(dc,hOldPen);
DeleteObject(hPenOxy);
DeleteObject(hNew);
hold=(HFONT)SelectObject(dc,hbk);



=============================OnPolar6()



CClientDC dc(this);
GetClientRect(&rc);
hNew=CreateFont(28,0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,L"Times New Roman Cyr"); 
hold=(HFONT)SelectObject(dc,hNew);
dc.FillSolidRect(&rc,RGB(255,255,255));
cf=RGB(255,255,255);
c=RGB(50,70,120);
SetTextColor(dc,c);
SetBkColor(dc,cf);
msg.Format(L"Полярная");
TextOutW(dc,rc.left+50,rc.bottom-450,msg,msg.GetLength());
msg.Format(L"система");
TextOutW(dc,rc.left+50,rc.bottom-420,msg,msg.GetLength());
msg.Format(L"координат");
TextOutW(dc,rc.left+50,rc.bottom-390,msg,msg.GetLength());

COLORREF crFunction = RGB(250,100,50);//цвет графика
COLORREF crAxes = RGB(89,89,250);//цвет осей (линий)
COLORREF crMarks = RGB(0,0,160);//цвет отметок на шкале
COLORREF crXYLines = RGB(140,70,0);//название осей
COLORREF crDeleniya = RGB(0,0,165);//цвет текста


HPEN hPenOxy,hOldPen;
hPenOxy=CreatePen(PS_SOLID,2,crAxes);//создаем кисть цветом "crOxy"
hOldPen = (HPEN)SelectObject(dc,hPenOxy);

SetTextColor(dc,crAxes);//устанавливаем цвет текста
int cxClient,cyClient;
cyClient = rc.bottom;//высота
cxClient = rc.right;//ширина
//выводим ось OX
MoveToEx(dc,0,cyClient/2,NULL);
LineTo(dc,cxClient,cyClient/2);
//выводим стрелочку
MoveToEx(dc,cxClient,cyClient/2,NULL);
LineTo(dc,cxClient-cxClient/100*2,cyClient/2-cyClient/100*2);
MoveToEx(dc,cxClient,cyClient/2,NULL);
LineTo(dc,cxClient-cxClient/100*2,cyClient/2+cyClient/100*2);
//рисуем ось OY
MoveToEx(dc,cxClient/2,00,NULL);
LineTo(dc,cxClient/2,cyClient);
//выводим стрелочку
MoveToEx(dc,cxClient/2,0,NULL);
LineTo(dc,cxClient/2-cxClient/100*2,cyClient/100*2);
MoveToEx(dc,cxClient/2,0,NULL);
LineTo(dc,cxClient/2+cxClient/100*2,cyClient/100*2);
//название осей
SetTextColor(dc,crXYLines);
TextOut(dc,cxClient-cxClient/100*2-30,cyClient/2+cyClient/100*2,L"OX",2);
TextOut(dc,cxClient/2+cxClient/100*2.5,cyClient/200,L"OY",2);
TextOut(dc,cxClient-cxClient/100*2-120,cyClient/200+140,L"k=129",5);

// рисуем график y=sin(x)

double x,y;//значений функций
int width,height;//высота, ширина делений

//ширину области деленим на колличество делений
width=cxClient/12;
height=cyClient/4;

double r,f;
int a,k;
a=200;
k=128;
    r=200;
f=0.1;
do 
{
r=a*sin(k*f);
x=r*cos(f);
y=r*sin(f);
SetPixel(dc,x+cxClient/2,y+cyClient/2,crFunction);
f+=0.01;
} while(f<=360);


SelectObject(dc,hOldPen);
DeleteObject(hPenOxy);
DeleteObject(hNew);
hold=(HFONT)SelectObject(dc,hbk);



=============================OnPolar7()



CClientDC dc(this);
GetClientRect(&rc);
hNew=CreateFont(28,0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,L"Times New Roman Cyr"); 
hold=(HFONT)SelectObject(dc,hNew);
dc.FillSolidRect(&rc,RGB(255,255,255));
cf=RGB(255,255,255);
c=RGB(50,70,120);
SetTextColor(dc,c);
SetBkColor(dc,cf);
msg.Format(L"Полярная");
TextOutW(dc,rc.left+50,rc.bottom-450,msg,msg.GetLength());
msg.Format(L"система");
TextOutW(dc,rc.left+50,rc.bottom-420,msg,msg.GetLength());
msg.Format(L"координат");
TextOutW(dc,rc.left+50,rc.bottom-390,msg,msg.GetLength());

COLORREF crFunction = RGB(250,100,50);//цвет графика
COLORREF crAxes = RGB(89,89,250);//цвет осей (линий)
COLORREF crMarks = RGB(0,0,160);//цвет отметок на шкале
COLORREF crXYLines = RGB(140,70,0);//название осей
COLORREF crDeleniya = RGB(0,0,165);//цвет текста


HPEN hPenOxy,hOldPen;
hPenOxy=CreatePen(PS_SOLID,2,crAxes);//создаем кисть цветом "crOxy"
hOldPen = (HPEN)SelectObject(dc,hPenOxy);

SetTextColor(dc,crAxes);//устанавливаем цвет текста
int cxClient,cyClient;
cyClient = rc.bottom;//высота
cxClient = rc.right;//ширина
//выводим ось OX
MoveToEx(dc,0,cyClient/2,NULL);
LineTo(dc,cxClient,cyClient/2);
//выводим стрелочку
MoveToEx(dc,cxClient,cyClient/2,NULL);
LineTo(dc,cxClient-cxClient/100*2,cyClient/2-cyClient/100*2);
MoveToEx(dc,cxClient,cyClient/2,NULL);
LineTo(dc,cxClient-cxClient/100*2,cyClient/2+cyClient/100*2);
//рисуем ось OY
MoveToEx(dc,cxClient/2,00,NULL);
LineTo(dc,cxClient/2,cyClient);
//выводим стрелочку
MoveToEx(dc,cxClient/2,0,NULL);
LineTo(dc,cxClient/2-cxClient/100*2,cyClient/100*2);
MoveToEx(dc,cxClient/2,0,NULL);
LineTo(dc,cxClient/2+cxClient/100*2,cyClient/100*2);
//название осей
SetTextColor(dc,crXYLines);
TextOut(dc,cxClient-cxClient/100*2-30,cyClient/2+cyClient/100*2,L"OX",2);
TextOut(dc,cxClient/2+cxClient/100*2.5,cyClient/200,L"OY",2);
TextOut(dc,cxClient-cxClient/100*2-150,cyClient/200+140,L"КАРДИОИДА",9);

// рисуем график y=sin(x)

double x,y;//значений функций
int width,height;//высота, ширина делений

//ширину области деленим на колличество делений
width=cxClient/12;
height=cyClient/4;

double e,r,f;
int a,b,k;
a=90;
b=70;
k=82;
e=a/b;
    r=200;
f=0;
do 
{
x=(b+e*b)*cos(e*f)-k*cos(f+e*f);
y=(b+e*b)*sin(e*f)-k*sin(f+e*f);
SetPixel(dc,x+cxClient/2,y+cyClient/2,crFunction);
f+=0.01;
} while(f<=360);


SelectObject(dc,hOldPen);
DeleteObject(hPenOxy);
DeleteObject(hNew);
hold=(HFONT)SelectObject(dc,hbk);




Ну вроде все ! Осталось только нажать F5 и проверить работоспособность.










Программа - Тут 


Комментариев нет:

Отправить комментарий