Beispiel #1
0
        private void SetInterpolationColorsInternal(ColorBlend blend)
        {
            int    i1 = (int)blend.Colors.Length;
            IntPtr j1 = Marshal.AllocHGlobal(4 * i1);
            IntPtr k  = Marshal.AllocHGlobal(4 * i1);

            int[] nums = new int[i1];
            for (int i2 = 0; i2 < i1; i2++)
            {
                nums[i2] = blend.Colors[i2].ToArgb();
            }
            Marshal.Copy(nums, 0, j1, i1);
            Marshal.Copy(blend.Positions, 0, k, i1);
            int j2 = GDIplus.GdipSetPathGradientPresetBlend(new HandleRef(this, m_nativeBrush), new HandleRef(null, j1), new HandleRef(null, k), i1);

            Marshal.FreeHGlobal(j1);
            Marshal.FreeHGlobal(k);
            if (j2 != 0)
            {
                throw new Exception(j2.ToString());
            }
            else
            {
                return;
            }
        }