普通对话框中onpaint()画出的曲线超出所调用的picture控件
目的:我想调用数组来画(X,Y)点图,显示到一个对话框的下部分。
先调用picture控件,获得此控件的位置,然后在次区域画(X,Y)点,并依次连成直线。
这些已实现,但当某个Y值很大时,就会出现绘制到picture控件外而影响了别的控件,哪位高手知道怎么办吗?怎样才能截断picture控件外的曲线,而又不影响picture控件内的曲线?我是新手。非常感谢!
void CMydlg::OnPaint()
{
CPaintDC dc(this);
CWnd *pPicCtrl = GetDlgItem(IDC_STATIC_PIC);
// 获取Pictrue控件在屏幕上的位置
CRect rc;
pPicCtrl->GetWindowRect(&rc);
// 获取Pictrue控件在对话框上的位置
ScreenToClient(rc);
……
……
CPoint Pl[50] ;
for(i=0;i<10;i++)
Pl[i] = CPoint((int)( x ),(int)( y ));
dc.Polyline(Pl, 10);
}
[解决办法]
可以通过CRgn设置剪切区域
然后pDC->SelectObject(rgn)
当然要记得画完把绘图区域设回来