Программа "Полярные проектирование"
Сегодня я расскажу как сделать программу в которой будет меню, в котором будут выпадающие пункты: Круг, Спираль, Кардиоида и Роза (с разным количеством лепестков: 3, 5, 7, 129)
1) Заходим с среду программирования;
2) Заходим в Solution Explorer и там выбираем папку Header Files, а в ней РrogramDlg.h;
3) Там вписываем этот блок:
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;
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 и нажимаем, как показано на картинке:
Далее нажимаем на "Меню" и нажимаем "новое". Теперь открываем планшетку, после чего заходим в настройки и в пункте "меню" выбираем только что созданное нами меню. Теперь заходим в само меню, где на каждой строчке в рядок набираем Polar1 и до Polar7, всего семь строк должно получиться. Нажимаю Правой Кнопкой Мыши на каждую строчку выбираем обработчик 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);
ck=RGB(50,70,120);
SetTextColor(dc; ck);
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);
ck=RGB(50,70,120);
SetTextColor(dc,ck);
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);
ck=RGB(50,70,120);
SetTextColor(dc,ck);
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()
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);
ck=RGB(50,70,120);
SetTextColor(dc,ck);
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);
ck=RGB(50,70,120);
SetTextColor(dc,ck);
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);
ck=RGB(50,70,120);
SetTextColor(dc,ck);
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);
ck=RGB(50,70,120);
SetTextColor(dc,ck);
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);
Теперь компилируем. Теперь можно переписать вместо Polar написать название того рисунка который будет на экране при нажатии.
Комментариев нет:
Отправить комментарий