Visual c++ CClientDC
CWnd* p_Canvas=GetDlgItem(IDC_STATIC);
p_Canvas->GetWindowRect(&m_Canvas);
ScreenToClient(&m_Canvas);
m_Canvas.DeflateRect(2,2,1,1);
с переделыванием координат (совсем чуть чуть)
дальше определяю контекст устройства
и рисую синусойду
CClientDC dc (this);
CPen NewPen(PS_DOT, 1, RGB(0,0,255));
dc.SelectObject(&NewPen);
dc.IntersectClipRect(&m_Canvas);
for (x=0;x<1000;x=x+0.1)
{
dc.MoveTo(x1,y1);
y=2*sin(x/3-pi/6)*10;
y=y+50;
dc.LineTo(x,y);
x1=x;
y1=y;
}
Синусойду он рисует как положено в(Picture) тока координаты он считает относительно окна, а не области для рисование. Т.е. когда перетащиш на другое место объект Picture то на экран ничего не выводится.