需要做一个表盘,在微秒级的级别下刷新表盘指针,现在的代码如下 dJD = CenterLevel; //度数
sTmp.Format("%.2f", dJD);
GetDlgItem(IDC_360_EDIT)->SetWindowText(sTmp);//界面框中显示
if ((dJD > 0) && (dJD <= 90))
dJD = 90 - dJD;
else
dJD = 360 - (dJD - 90);
dJD = dJD * 3.1415926 / 180;//弧度
iX = cos(dJD) * 60;
iY = sin(dJD) * 60; pDC = GetDlgItem(IDC_360)->GetDC();
dcMem360.CreateCompatibleDC(pDC);//在内存中建造了DC
CBitmap* pOldBmp = dcMem360.SelectObject(&bmp_360);
//将内存中的图拷贝到屏幕上进行显示
pDC->BitBlt(0, 0, 170, 170, &dcMem360, 0, 0, SRCCOPY);
//绘图
pOldpen = pDC->SelectObject(&pen);
nOldRop = pDC->SetROP2(R2_NOTXORPEN); pDC->MoveTo(85, 85);
pDC->LineTo(85 + iX, 85 - iY);
pDC->SetROP2(nOldRop);
pDC->SelectObject(pOldpen);
//绘图完成后的清理
ReleaseDC(&dcMem360);
bmp_360 为窗体类定义的Bitmap,已载入底图
我的想法是每次画图前载入原始图像,在窗体中显示后在上面重新画现在的问题是在2毫秒的情况下执行一段时间(5分钟左右)
程序提示内存访问错误,请问上面的执行有问题吗?有没有更好的方法进行处理?
sTmp.Format("%.2f", dJD);
GetDlgItem(IDC_360_EDIT)->SetWindowText(sTmp);//界面框中显示
if ((dJD > 0) && (dJD <= 90))
dJD = 90 - dJD;
else
dJD = 360 - (dJD - 90);
dJD = dJD * 3.1415926 / 180;//弧度
iX = cos(dJD) * 60;
iY = sin(dJD) * 60; pDC = GetDlgItem(IDC_360)->GetDC();
dcMem360.CreateCompatibleDC(pDC);//在内存中建造了DC
CBitmap* pOldBmp = dcMem360.SelectObject(&bmp_360);
//将内存中的图拷贝到屏幕上进行显示
pDC->BitBlt(0, 0, 170, 170, &dcMem360, 0, 0, SRCCOPY);
//绘图
pOldpen = pDC->SelectObject(&pen);
nOldRop = pDC->SetROP2(R2_NOTXORPEN); pDC->MoveTo(85, 85);
pDC->LineTo(85 + iX, 85 - iY);
pDC->SetROP2(nOldRop);
pDC->SelectObject(pOldpen);
//绘图完成后的清理
ReleaseDC(&dcMem360);
bmp_360 为窗体类定义的Bitmap,已载入底图
我的想法是每次画图前载入原始图像,在窗体中显示后在上面重新画现在的问题是在2毫秒的情况下执行一段时间(5分钟左右)
程序提示内存访问错误,请问上面的执行有问题吗?有没有更好的方法进行处理?
解决方案 »
- error C2664: 'fopen' : cannot convert parameter 1 from 'CString' to 'const char
- 真彩色转灰度图的程序
- atl做个嵌入WORD的ACTIVEX,如何接管鼠标消息?怕没人解决在开贴给分
- 请问如何屏蔽本机所有的TCP.IP.ICMP包
- [求助]数据打包传输(新手)
- 怎样改变按纽的背景色和其上的字体颜色?
- 如何让超链接失效?详细情况见内
- (不是用程序)如何实现 win98下用户必须输入密码才能登陆(即按取消键不能登陆)??
- 想问一下MFC中有没有提供一个专门用于IP处理的函数
- txt文件读取为什么会读出乱码????
- 这句是什么意思?
- vc2008 sp1生成一个 vs2005式样的程序,下次启动后,依旧能保持上次关闭时候的模样,这咋实现的?
//绘图完成后的清理
ReleaseDC(&dcMem360); // 如果 dcMem360 是局部变量,那这句就是多余的
加上一句
GetDlgItem(IDC_360)->ReleaseDC( pDC );
GetDlgItem(IDC_360)->ReleaseDC( pDC );