void CMyView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default pDC=GetDC(); center=point; r=rand()%46+5;//r=5~50 color=RGB(rand()%256,rand()%256,rand()%256); br.CreateSolidBrush(color); pDC->SelectObject(&br); pDC->Ellipse(center.x-r,center.y-r,center.x+r,center.y+r); br.DeleteObject(); CView::OnLButtonDown(nFlags, point); } void CMyView::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default SetTimer(1,200,NULL); CView::OnLButtonUp(nFlags, point); } void CMyView::rise() { center.y-=5; pDC=GetDC(); br.CreateSolidBrush(color); pDC->SelectObject(&br); pDC->Ellipse(center.x-r,center.y-r,center.x+r,center.y+r); br.DeleteObject(); } void CMyView::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default if (nIDEvent==1){ CDC *pDC=GetDC(); CRect rect; GetClientRect(&rect); for(int i=0;i<5;i++){ br.CreateSolidBrush(color); pDC->SelectObject(&br); pDC->Ellipse(center.x-r,center.y-r,center.x+r,center.y+r); br.DeleteObject();} ReleaseDC(pDC); center.y-=5; }怎么改能让这个圆没有运动轨迹
时间: 2024-01-29 08:04:03 浏览: 102
要让圆没有运动轨迹,可以在每次重绘之前,先用背景色覆盖整个视图区域,然后再绘制圆。修改代码如下:
```
void CMyView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
pDC = GetDC();
center = point;
r = rand() % 46 + 5; //r=5~50
color = RGB(rand() % 256, rand() % 256, rand() % 256);
br.CreateSolidBrush(color);
pDC->SelectObject(&br);
pDC->Ellipse(center.x - r, center.y - r, center.x + r, center.y + r);
br.DeleteObject();
CView::OnLButtonDown(nFlags, point);
}
void CMyView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
SetTimer(1, 200, NULL);
CView::OnLButtonUp(nFlags, point);
}
void CMyView::rise()
{
center.y -= 5;
pDC = GetDC();
br.CreateSolidBrush(color);
pDC->SelectObject(&br);
pDC->Ellipse(center.x - r, center.y - r, center.x + r, center.y + r);
br.DeleteObject();
}
void CMyView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if (nIDEvent == 1) {
CDC* pDC = GetDC();
CRect rect;
GetClientRect(&rect);
pDC->FillSolidRect(rect, GetSysColor(COLOR_WINDOW)); // 用背景色覆盖整个视图区域
for (int i = 0; i < 5; i++) {
br.CreateSolidBrush(color);
pDC->SelectObject(&br);
pDC->Ellipse(center.x - r, center.y - r, center.x + r, center.y + r);
br.DeleteObject();
}
ReleaseDC(pDC);
center.y -= 5;
}
}
```
阅读全文
相关推荐















