unsafe void Draw() { m_bmp.Lock(); for (int y = 0; y < m_bmp.PixelHeight; ++y) { int *p = (int *)(m_bmp.BackBuffer + m_bmp.BackBufferStride * y); for (int x = 0; x < m_bmp.PixelWidth; ++x) { double fx = (double)x / m_bmp.PixelWidth; double fy = (double)y / m_bmp.PixelHeight; Color3 c = PS(fx, fy); p[x] = c.ToBgra(); } } m_bmp.AddDirtyRect(new Int32Rect(0, 0, m_bmp.PixelWidth, m_bmp.PixelHeight)); m_bmp.Unlock(); }