コード例 #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BufferedPainter"/> class and begins a buffered animation operation. The animation consists of a
        /// cross-fade between the contents of two buffers over a specified period of time.
        /// </summary>
        /// <param name="wnd">The window in which the animations play.</param>
        /// <param name="hdc">A handle of the target DC on which the buffer is animated.</param>
        /// <param name="targetRectangle">Specifies the area of the target DC in which to draw.</param>
        /// <param name="animationParams">A structure that defines the animation operation parameters. This value can be <see langword="null"/>.</param>
        /// <param name="paintParams">A class that defines the paint operation parameters. This value can be <see langword="null"/>.</param>
        /// <param name="fmt">The format of the buffer.</param>
        /// <exception cref="Win32Exception">Buffered animation could not initialize.</exception>
        public BufferedAnimationPainter(IWin32Window wnd, SafeDCHandle hdc, Rectangle targetRectangle, BP_ANIMATIONPARAMS?animationParams = null,
                                        BP_PAINTPARAMS paintParams = null, BP_BUFFERFORMAT fmt = BP_BUFFERFORMAT.BPBF_TOPDOWNDIB)
        {
            RECT rc = targetRectangle;
            var  ap = animationParams ?? BP_ANIMATIONPARAMS.Empty;

            hba = BeginBufferedAnimation(new HandleRef(wnd, wnd.Handle), hdc, ref rc, fmt, paintParams, ref ap, out IntPtr hdcFrom, out IntPtr hdcTo);
            if (hba.IsInvalid)
            {
                throw new Win32Exception();
            }
            if (hdcFrom != IntPtr.Zero)
            {
                SourceGraphics = Graphics.FromHdc(hdcFrom);
            }
            if (hdcTo != IntPtr.Zero)
            {
                DestinationGraphics = Graphics.FromHdc(hdcTo);
            }
        }
コード例 #2
0
ファイル: BufferedPaint.cs プロジェクト: wushian/Vanara
        /// <summary>
        /// Initializes a new instance of the <see cref="BufferedPainter"/> class and begins a buffered animation operation. The animation consists of a
        /// cross-fade between the contents of two buffers over a specified period of time.
        /// </summary>
        /// <param name="wnd">The window in which the animations play.</param>
        /// <param name="hdc">A handle of the target DC on which the buffer is animated.</param>
        /// <param name="targetRectangle">Specifies the area of the target DC in which to draw.</param>
        /// <param name="animationParams">A structure that defines the animation operation parameters. This value can be <see langword="null"/>.</param>
        /// <param name="paintParams">A class that defines the paint operation parameters. This value can be <see langword="null"/>.</param>
        /// <param name="fmt">The format of the buffer.</param>
        /// <exception cref="Win32Exception">Buffered animation could not initialize.</exception>
        public BufferedAnimationPainter(IWin32Window wnd, HDC hdc, Rectangle targetRectangle, BP_ANIMATIONPARAMS?animationParams = null,
                                        BP_PAINTPARAMS paintParams = null, BP_BUFFERFORMAT fmt = BP_BUFFERFORMAT.BPBF_TOPDOWNDIB)
        {
            RECT rc = targetRectangle;
            var  ap = animationParams ?? BP_ANIMATIONPARAMS.Empty;

            hba = BeginBufferedAnimation(wnd.Handle, hdc, rc, fmt, paintParams, ap, out var hdcFrom, out var hdcTo);
            if (hba.IsInvalid)
            {
                throw new Win32Exception();
            }
            if (!hdcFrom.IsNull)
            {
                SourceGraphics = Graphics.FromHdc((IntPtr)hdcFrom);
            }
            if (!hdcTo.IsNull)
            {
                DestinationGraphics = Graphics.FromHdc((IntPtr)hdcTo);
            }
        }