Exemple #1
0
        private static InterpolationMode GetInterpolationMode(BitmapInterpolationMode interpolationMode)
        {
            switch (interpolationMode)
            {
            case BitmapInterpolationMode.LowQuality:
                return(InterpolationMode.NearestNeighbor);

            case BitmapInterpolationMode.MediumQuality:
                return(InterpolationMode.Linear);

            case BitmapInterpolationMode.HighQuality:
                return(InterpolationMode.HighQualityCubic);

            case BitmapInterpolationMode.Default:
                return(InterpolationMode.Linear);

            default:
                throw new ArgumentOutOfRangeException(nameof(interpolationMode), interpolationMode, null);
            }
        }
Exemple #2
0
        /// <summary>
        /// Draws a bitmap image.
        /// </summary>
        /// <param name="source">The bitmap image.</param>
        /// <param name="opacity">The opacity to draw with.</param>
        /// <param name="sourceRect">The rect in the image to draw.</param>
        /// <param name="destRect">The rect in the output to draw to.</param>
        /// <param name="bitmapInterpolationMode">The bitmap interpolation mode.</param>
        public void DrawBitmap(IRef <IBitmapImpl> source, double opacity, Rect sourceRect, Rect destRect, BitmapInterpolationMode bitmapInterpolationMode)
        {
            using (var d2d = ((BitmapImpl)source.Item).GetDirect2DBitmap(_deviceContext))
            {
                var interpolationMode = GetInterpolationMode(bitmapInterpolationMode);

                // TODO: How to implement CompositeMode here?

                _deviceContext.DrawBitmap(
                    d2d.Value,
                    destRect.ToSharpDX(),
                    (float)opacity,
                    interpolationMode,
                    sourceRect.ToSharpDX(),
                    null);
            }
        }