InvalidateRect函数使用以及math.h中的sin函数使用
在对话框里的一个名为IDC_RESULT的static Text控件里作图,三种图形选择,点击确定键作图,代码如下:
void CDrawDlg::OnPaint()
{
CWnd* pWnd=GetDlgItem(IDC_RESULT);
CPaintDC dcPaint(pWnd);
CPen pen(PS_SOLID,2,RGB(0,0,0));
dcPaint.SelectObject(&pen);
CRect rect;
pWnd->GetClientRect(&rect);
if(isLine)
{
//MessageBox(_T("isLine"));
InvalidateRect(rect, false);
//UpdateWindow();
dcPaint.MoveTo(10,150);
dcPaint.LineTo (350,150);
}
if(isRect)
{
//MessageBox(_T("isRect"));
dcPaint.Rectangle(50, 100, 300, 200);
}
if(isSineFunction)
{
double y;
for(int x= 0;x < 360; x++)
{
y = sin(x*2*3.14/360) * 100 + 100;
dcPaint.LineTo(x,y);
}
}
ReleaseDC(&dcPaint);
if (IsIconic())
{
MessageBox(_T("OnPaint"));
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}
..................
void CDrawDlg::OnBnClickedOk()
{
Invalidate(false);
//Invalidate(true);
UpdateWindow();
}
void CDrawDlg::OnBnClickedRadioLine()
{
isLine = true;
isRect = false;
isSineFunction = false;
}
void CDrawDlg::OnBnClickedRadioRect()
{
isLine = false;
isRect = true;
isSineFunction = false;
}
void CDrawDlg::OnBnClickedRadio()
{
isLine = false;
isRect = false;
isSineFunction = true;
}
问题一、error C3861: “sin”: 找不到标识符,已经包含了头文件math.h
问题二、想在点击确定键换另外一个图形是把static text控件上的原有图形擦出,于是试图用InvalidateRect来实现,但是不知道为什么只能擦出一半。
新手。。。
void CDrawDlg::OnPaint()
{
CWnd* pWnd=GetDlgItem(IDC_RESULT);
CPaintDC dcPaint(pWnd);
CPen pen(PS_SOLID,2,RGB(0,0,0));
dcPaint.SelectObject(&pen);
CRect rect;
pWnd->GetClientRect(&rect);
if(isLine)
{
//MessageBox(_T("isLine"));
InvalidateRect(rect, false);
//UpdateWindow();
dcPaint.MoveTo(10,150);
dcPaint.LineTo (350,150);
}
if(isRect)
{
//MessageBox(_T("isRect"));
dcPaint.Rectangle(50, 100, 300, 200);
}
if(isSineFunction)
{
double y;
for(int x= 0;x < 360; x++)
{
y = sin(x*2*3.14/360) * 100 + 100;
dcPaint.LineTo(x,y);
}
}
ReleaseDC(&dcPaint);
if (IsIconic())
{
MessageBox(_T("OnPaint"));
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}
..................
void CDrawDlg::OnBnClickedOk()
{
Invalidate(false);
//Invalidate(true);
UpdateWindow();
}
void CDrawDlg::OnBnClickedRadioLine()
{
isLine = true;
isRect = false;
isSineFunction = false;
}
void CDrawDlg::OnBnClickedRadioRect()
{
isLine = false;
isRect = true;
isSineFunction = false;
}
void CDrawDlg::OnBnClickedRadio()
{
isLine = false;
isRect = false;
isSineFunction = true;
}
问题一、error C3861: “sin”: 找不到标识符,已经包含了头文件math.h
问题二、想在点击确定键换另外一个图形是把static text控件上的原有图形擦出,于是试图用InvalidateRect来实现,但是不知道为什么只能擦出一半。
新手。。。
...全文
相关推荐
C_中math.h函数总结
C_中math.h函数总结,列出了c语言中用到的数学计算函数。
Python入门之三角函数sin()函数实例详解
主要介绍了Python入门之三角函数sin()函数实例详解,分享了相关实例,具有一定参考价值,需要的朋友可以了解下。
JavaScript中的Math.sin()方法使用详解
这个方法返回一个数字的正弦。sin方法返回-1到1之间的数值,它表示参数的正弦值。 语法 Math.sin( x ) ; 下面是参数的详细信息: x: 一个数字 返回值: 返回一个数字的正弦值 例子: <html> <head> <title>JavaScript Math sin() Method</title> </head> <body> [removed] var value = Math.sin( 0.5 ); [removed]("First Test Value : " + value ); var v
cos-sin:使用cos和sin函数HTML Canvas Math示例
余弦 使用Angular和html canvas的Cos / Sin Math动画。 演示: :
math.h头文件
编译时你可能会提示缺少一个头文件 这就是其中之一的头文件 尤其是很多数学运算会用到这个头文件 编译时你可能会提示缺少一个头文件 这就是其中之一的头文件 尤其是很多数学运算会用到这个头文件


