?? sbqlei.cpp
字號:
// sbqlei.cpp : implementation file
//
#include "stdafx.h"
#include "sbq.h"
#include "sbqlei.h"
#include "math.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define PI 3.1415926535897932384626433832795
/////////////////////////////////////////////////////////////////////////////
// sbqlei
int zhenfu; //振幅
double pinlv; //頻率
int xiangwei; //相位
CRect m_rectCurve;
CPen m_PenCurve;
CPen m_Penjixian;
CBrush m_BkBrush;
//CBrush m_CurveBrush;
CDC* pDC;
sbqlei::sbqlei()
{
m_BkBrush.CreateSolidBrush(RGB(0,0,0)); //黑色背景刷
m_Penjixian.CreatePen(PS_SOLID,1,RGB(255,255,255)); //畫格子的筆
m_PenCurve.CreatePen(PS_SOLID,2,RGB(0,255,0)); //畫波形的筆
zhenfu = 80; //振幅
pinlv=3.5; //頻率
xiangwei=0; //相位
}
sbqlei::~sbqlei()
{
}
BEGIN_MESSAGE_MAP(sbqlei, CStatic)
//{{AFX_MSG_MAP(sbqlei)
ON_WM_PAINT()
ON_WM_ERASEBKGND()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// sbqlei message handlers
void sbqlei::DrawBack(CDC *pDC) //刷背景和格子
{
CPen *pBcpen;
LPRECT lpRect;
lpRect = m_rectCurve;
pDC->FillRect(&m_rectCurve,&m_BkBrush); //刷背景
pBcpen=pDC->SelectObject(&m_Penjixian);
for(int t = 0; t<9; t++) //畫豎線
{
pDC->MoveTo(t*(lpRect->right - lpRect->left)/8,0);
pDC->LineTo(t*(lpRect->right - lpRect->left)/8,lpRect->bottom - lpRect->top);
}
for(int r = 0; r<5; r++) //畫橫線
{
pDC->MoveTo(0,r*(lpRect->bottom - lpRect->top)/4);
pDC->LineTo(lpRect->right - lpRect->left,r*(lpRect->bottom - lpRect->top)/4);
}
pBcpen->DeleteObject(); //刪除畫筆
}
void sbqlei::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
DrawBack(&dc);
//DrawCurve(&dc);
// Do not call CStatic::OnPaint() for painting messages
}
BOOL sbqlei::OnEraseBkgnd(CDC* pDC) //自動填充背景
{
// TODO: Add your message handler code here and/or call default
CRect rect;
GetClientRect(&rect);
pDC->FillRect(&rect,&m_BkBrush); //刷背景
m_rectCurve = rect;
return CStatic::OnEraseBkgnd(pDC);
}
void sbqlei::DrawCurve(CDC *pDC,int s) //畫波形
{
CPen *pBcpen;
LPRECT lpRect;
lpRect = m_rectCurve;
pDC->FillRect(&m_rectCurve,&m_BkBrush); //填充背景
pBcpen=pDC->SelectObject(&m_Penjixian);
for(int t = 0; t<9; t++) //畫豎線
{
pDC->MoveTo(t*(lpRect->right - lpRect->left)/8,0);
pDC->LineTo(t*(lpRect->right - lpRect->left)/8,lpRect->bottom - lpRect->top);
}
for(int r = 0; r<5; r++) //畫橫線
{
pDC->MoveTo(0,r*(lpRect->bottom - lpRect->top)/4);
pDC->LineTo(lpRect->right - lpRect->left,r*(lpRect->bottom - lpRect->top)/4);
}
CPen *pCurvepen;
pCurvepen=pDC->SelectObject(&m_PenCurve);
for(int u = 0;u<(lpRect->right - lpRect->left);u++) //畫波形
{
pDC->MoveTo(u-1,-zhenfu*sin(pinlv*(u-1)*2*PI/500+s/10)+(lpRect->bottom-lpRect->top)/2);
pDC->LineTo(u,-zhenfu*sin(pinlv*u*2*PI/500+s/10)+(lpRect->bottom-lpRect->top)/2);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -