请问画图里边的画笔是如何实现的呢?
比如WINDOWS或者FLASHMX之类的作图软件里边的画笔.
是怎么做到很快的采样,来跟踪鼠标的轨迹的呢?
我发现我的采样很慢,移动一快就出现断点了!
我现在是这么做的!
case WM_LBUTTONDOWN:
xPos=LOWORD(lParam);
yPos=HIWORD(lParam);
bLeftButtonDown=true;
if(bFill==true)
{
bScreen[xPos][yPos]=false;
Fill(xPos,yPos);
bFill=false;
InvalidateRect(hwnd,NULL,TRUE);
}
else
{
bScreen[xPos][yPos]=true;
rect.left=xPos;
rect.right=xPos+1;
rect.bottom=yPos+1;
rect.top=yPos;
InvalidateRect(hwnd,&rect,TRUE);
}
return 0;
case WM_LBUTTONUP:
bLeftButtonDown=false;
return 0;
case WM_MOUSEMOVE:
xPos=LOWORD(lParam);
yPos=HIWORD(lParam);
if(bLeftButtonDown==true)
{
bScreen[xPos][yPos]=true;
rect.left=xPos;
rect.right=xPos+1;
rect.bottom=yPos+1;
rect.top=yPos;
InvalidateRect(hwnd,&rect,TRUE);
}
return 0;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
for(i=ps.rcPaint.left;i<ps.rcPaint.right+1;++i)
for(j=ps.rcPaint.top;j<ps.rcPaint.bottom+1;++j)
if(bScreen[i][j]==true)
SetPixel(hdc,i,j,RGB(0,0,0));
EndPaint(hwnd,&ps);
return 0;
case WM_COMMAND:
bFill=true;
return 0;