コード例 #1
0
        private PlacedBitmap TryGetFontPreview(string gdiFontName, float fontSize, PaintDotNet.UI.Media.Brush textBrush)
        {
            PlacedBitmap bitmap;
            TupleStruct <string, float, PaintDotNet.UI.Media.Brush> key = TupleStruct.Create <string, float, PaintDotNet.UI.Media.Brush>(gdiFontName, fontSize, textBrush);
            Dictionary <TupleStruct <string, float, PaintDotNet.UI.Media.Brush>, PlacedBitmap> fontPreviewRenderCache = this.fontPreviewRenderCache;

            lock (fontPreviewRenderCache)
            {
                bool flag2 = this.fontPreviewRenderCache.TryGetValue(key, out bitmap);
            }
            return(bitmap);
        }
コード例 #2
0
        private PlacedBitmap CreateFontPreview(string gdiFontName, float fontSize, PaintDotNet.UI.Media.Brush textBrush)
        {
            FontProperties  fontProperties;
            TextMetrics     metrics;
            OverhangMetrics overhangMetrics;

            try
            {
                fontProperties = this.fontMap.GetFontProperties(gdiFontName);
                using (IDrawingContext context = DrawingContext.CreateNull(FactorySource.PerThread))
                {
                    TextLayoutAlgorithm?layoutAlgorithm        = null;
                    TextLayout          resourceSource         = UIText.CreateLayout(context, this.fontSampleText, fontProperties, (double)fontSize, layoutAlgorithm, HotkeyRenderMode.Ignore, 65535.0, 65535.0);
                    ITextLayout         cachedOrCreateResource = context.GetCachedOrCreateResource <ITextLayout>(resourceSource);
                    metrics         = cachedOrCreateResource.Metrics;
                    overhangMetrics = cachedOrCreateResource.OverhangMetrics;
                }
            }
            catch (Exception exception)
            {
                if ((!(exception is NoFontException) && !(exception is FontFileAccessException)) && (!(exception is FontFileFormatException) && !(exception is FontFileNotFoundException)))
                {
                    throw;
                }
                Surface     cleanupObject = Surface.CopyFromGdipImage(PdnResources.GetImageResource("Icons.WarningIcon.png").Reference);
                BitmapProxy proxy         = new BitmapProxy(cleanupObject.CreateAliasedImagingBitmap(), ObjectRefProxyOptions.AssumeOwnership);
                proxy.AddCleanupObject(cleanupObject);
                return(new PlacedBitmap(proxy, new RectDouble(0.0, 0.0, (double)proxy.Size.Width, (double)proxy.Size.Height), true));
            }
            RectDouble a      = new RectDouble((double)metrics.Left, (double)metrics.Top, (double)(metrics.Left + metrics.WidthMax), (double)(metrics.Top + metrics.Height));
            RectDouble b      = RectDouble.FromEdges((double)(metrics.Left - overhangMetrics.Left), (double)(metrics.Top - overhangMetrics.Top), (double)(metrics.LayoutWidth + overhangMetrics.Right), (double)(metrics.LayoutHeight + overhangMetrics.Bottom));
            RectInt32  num4   = RectDouble.Union(a, b).Int32Bound;
            IBitmap    bitmap = new PaintDotNet.Imaging.Bitmap(num4.Width, num4.Height, PixelFormats.Pbgra32, BitmapCreateCacheOption.CacheOnLoad);

            using (IDrawingContext context2 = DrawingContext.FromBitmap(bitmap, FactorySource.PerThread))
            {
                context2.Clear(null);
                using (context2.UseTranslateTransform((float)-num4.X, (float)-num4.Y, MatrixMultiplyOrder.Prepend))
                {
                    using (context2.UseTextRenderingMode(TextRenderingMode.Outline))
                    {
                        TextLayout textLayout = UIText.CreateLayout(context2, this.fontSampleText, fontProperties, (double)fontSize, null, HotkeyRenderMode.Ignore, 65535.0, 65535.0);
                        context2.TextAntialiasMode = TextAntialiasMode.Grayscale;
                        context2.DrawTextLayout(0.0, 0.0, textLayout, textBrush, DrawTextOptions.None);
                    }
                }
            }
            return(new PlacedBitmap(bitmap, b, true));
        }
コード例 #3
0
 protected override void OnRender(IDrawingContext dc, RectFloat clipRect)
 {
     using (dc.UseAntialiasMode(AntialiasMode.Aliased))
     {
         SizeInt32 num;
         Size      clientSize = base.ClientSize;
         if ((clientSize.Width < 2) || (clientSize.Height < 2))
         {
             num = new SizeInt32(3, 3);
         }
         else
         {
             num = new SizeInt32(clientSize.Width, clientSize.Height);
         }
         dc.Clear(new ColorRgba128Float?((ColorRgba128Float)PaintDotNet.Imaging.SystemColors.Window));
         int    num2 = (int)(this.tolerance * 100f);
         string text = string.Format(percentageFormat, num2);
         if (this.textLayout == null)
         {
             this.textLayout = UIText.CreateLayout(dc, text, this.Font, null, HotkeyRenderMode.Ignore, 65535.0, 65535.0);
             this.textLayout.ParagraphAlignment = ParagraphAlignment.Center;
             this.textLayout.FontSize          *= 0.9;
         }
         else
         {
             this.textLayout.Text = text;
         }
         this.textLayout.MaxWidth  = num.Width - 6;
         this.textLayout.MaxHeight = num.Height - 6;
         PointDouble origin = new PointDouble(3.0, 3.0);
         dc.DrawTextLayout(origin, this.textLayout, SolidColorBrushCache.Get(base.Enabled ? ((ColorRgba128Float)PaintDotNet.Imaging.SystemColors.WindowText) : ((ColorRgba128Float)PaintDotNet.Imaging.SystemColors.GrayText)), DrawTextOptions.None);
         RectDouble rect = new RectDouble(0.0, 0.0, (double)num.Width, (double)num.Height);
         RectDouble num5 = RectDouble.Inflate(rect, -0.5, -0.5);
         dc.DrawRectangle(num5, SolidColorBrushCache.Get(base.Enabled ? ((ColorRgba128Float)PaintDotNet.Imaging.SystemColors.ControlDark) : ((ColorRgba128Float)PaintDotNet.Imaging.SystemColors.ControlDark)), 1.0);
         RectDouble num6 = new RectDouble(1.0, 1.0, (num.Width - 2.0) * this.tolerance, (double)(num.Height - 2));
         PaintDotNet.UI.Media.Brush brush = SolidColorBrushCache.Get(base.Enabled ? (this.hovering ? ((ColorRgba128Float)PaintDotNet.Imaging.SystemColors.HotTrack) : ((ColorRgba128Float)PaintDotNet.Imaging.SystemColors.Highlight)) : ((ColorRgba128Float)PaintDotNet.Imaging.SystemColors.Control));
         dc.FillRectangle(num6, brush);
         using (dc.UseAxisAlignedClip((RectFloat)num6, AntialiasMode.PerPrimitive))
         {
             dc.DrawTextLayout(origin, this.textLayout, SolidColorBrushCache.Get(base.Enabled ? ((ColorRgba128Float)PaintDotNet.Imaging.SystemColors.HighlightText) : ((ColorRgba128Float)PaintDotNet.Imaging.SystemColors.GrayText)), DrawTextOptions.None);
         }
     }
     base.OnRender(dc, clipRect);
 }
コード例 #4
0
        private ImageResource CreateImageResource(int width, int height, double borderSize)
        {
            ImageResource resource2;
            double        x = borderSize / 2.0;

            using (ISurface <ColorBgra> surface = SurfaceAllocator.Bgra.Allocate(width, height, AllocationOptions.ZeroFillNotRequired))
            {
                using (IDrawingContext context = DrawingContext.FromSurface(surface, AlphaMode.Premultiplied, FactorySource.PerThread))
                {
                    RectDouble num4;
                    context.Clear(null);
                    RectDouble num2        = new RectDouble(x, x, width - borderSize, height - borderSize);
                    double     aspectRatio = this.AspectRatio;
                    if (aspectRatio > 1.0)
                    {
                        double num5 = num2.Height / aspectRatio;
                        num4 = new RectDouble(num2.X, num2.Y + ((num2.Height - num5) / 2.0), num2.Width, num5);
                    }
                    else if (aspectRatio < 1.0)
                    {
                        double num6 = num2.Width * aspectRatio;
                        num4 = new RectDouble(num2.X + ((num2.Width - num6) / 2.0), num2.Y, num6, num2.Height);
                    }
                    else
                    {
                        num4 = num2;
                    }
                    IDictionary <string, object> settingValues = (from p in this.RenderSettingPaths select KeyValuePairUtil.Create <string, object>(p, AppSettings.Instance[ConvertToolsPathToToolDefaultsPath(p)].Value)).ToDictionary <string, object>();
                    ShapeRenderParameters        renderParams  = new ShapeRenderParameters(num4.TopLeft, num4.BottomRight, new VectorDouble(1.0, 1.0), settingValues, null);
                    PropertyCollection           properties    = this.CreatePropertyCollection(renderParams);
                    this.OnSetImagePropertyCollectionValues(renderParams, properties);
                    IDictionary <object, object> propertyValues = (from p in properties select KeyValuePairUtil.Create <object, object>(p.GetOriginalNameValue(), p.Value)).ToDictionary <object, object>();
                    ShapeRenderParameters        parameters2    = new ShapeRenderParameters(num4.TopLeft, num4.BottomRight, new VectorDouble(1.0, 1.0), settingValues, propertyValues);
                    ShapeRenderData            data             = this.CreateImageRenderData(parameters2);
                    PaintDotNet.UI.Media.Brush brush            = SolidColorBrushCache.Get((ColorRgba128Float)ColorBgra.FromUInt32(0xff5894c1));
                    if (data.InteriorFill != null)
                    {
                        context.FillGeometry(data.InteriorFill.Geometry, SolidColorBrushCache.Get((ColorRgba128Float)Colors.White), null);
                        LinearGradientBrush brush2 = new LinearGradientBrush {
                            StartPoint = num4.TopLeft,
                            EndPoint   = num4.BottomRight
                        };
                        brush2.GradientStops.Add(new GradientStop((ColorRgba128Float)ColorBgra32.FromUInt32(0xffc0e1f3), 0.0));
                        brush2.GradientStops.Add(new GradientStop((ColorRgba128Float)ColorBgra32.FromUInt32(0xffe0eff8), 1.0));
                        context.FillGeometry(data.InteriorFill.Geometry, brush2, null);
                    }
                    if ((data.InteriorFill != null) && (data.OutlineDraw != null))
                    {
                        RenderLayer layer = RenderLayerCache.Get();
                        using (context.UseLayer(layer, null, data.InteriorFill.Geometry, AntialiasMode.PerPrimitive, null, 1.0, null, LayerOptions.None))
                        {
                            context.DrawGeometry(data.OutlineDraw.Geometry, SolidColorBrushCache.Get((ColorRgba128Float)Colors.White), 3.0);
                        }
                        RenderLayerCache.Return(layer);
                    }
                    if (data.OutlineDraw != null)
                    {
                        context.DrawGeometry(data.OutlineDraw.Geometry, brush, 1.0);
                    }
                    if (data.OutlineFill != null)
                    {
                        context.FillGeometry(data.OutlineFill.Geometry, brush, null);
                    }
                    string imageStringOverlay = this.ImageStringOverlay;
                    if (imageStringOverlay != string.Empty)
                    {
                        double     num7       = (width * 7.0) / 16.0;
                        double     fontSize   = UIUtil.ScaleWidth(num7);
                        TextLayout textLayout = new TextLayout(imageStringOverlay, "Arial", FontWeight.Normal, PaintDotNet.DirectWrite.FontStyle.Normal, FontStretch.Normal, fontSize)
                        {
                            ParagraphAlignment = ParagraphAlignment.Center,
                            TextAlignment      = PaintDotNet.DirectWrite.TextAlignment.Center,
                            MaxWidth           = width - 2,
                            MaxHeight          = height - 2
                        };
                        context.DrawTextLayout(new PointDouble(1.0, 1.0), textLayout, SolidColorBrushCache.Get((ColorRgba128Float)ColorBgra.FromUInt32(0xff5894c1)), DrawTextOptions.None);
                    }
                }
                surface.ConvertFromPremultipliedAlpha();
                using (System.Drawing.Bitmap bitmap = surface.CreateAliasedGdipBitmap())
                {
                    System.Drawing.Bitmap image = new System.Drawing.Bitmap(bitmap);
                    resource2 = ImageResource.FromImage(image);
                }
            }
            return(resource2);
        }
コード例 #5
0
ファイル: HistoryControl.cs プロジェクト: ykafia/Paint.Net4
 protected override void OnRender(IDrawingContext dc, RectFloat clipRect)
 {
     if (this.historyStack != null)
     {
         dc.Clear(new ColorRgba128Float?(this.BackColor));
         using (dc.UseTranslateTransform(0f, (float)-this.scrollOffset, MatrixMultiplyOrder.Prepend))
         {
             int                 num7;
             int                 num8;
             int                 num11;
             int                 num12;
             RectDouble?         nullable;
             TextLayoutAlgorithm?nullable2;
             int                 num  = UIUtil.ScaleWidth(1);
             int                 num2 = (this.itemHeight - this.imageHeight) / 2;
             int                 num3 = UIUtil.ScaleWidth(2);
             RectInt32           a    = this.ClientRectangleToViewRectangle(base.ClientRectangle.ToRectInt32());
             RectInt32           undoViewRectangle = this.UndoViewRectangle;
             dc.FillRectangle(undoViewRectangle, PaintDotNet.UI.Media.SystemBrushes.Window);
             RectInt32 num6 = RectInt32.Intersect(a, undoViewRectangle);
             if ((num6.Width > 0) && (num6.Height > 0))
             {
                 ItemType type;
                 this.ViewPointToStackIndex(num6.Location, out type, out num7);
                 this.ViewPointToStackIndex(new PointInt32(num6.Left, num6.Bottom - 1), out type, out num8);
             }
             else
             {
                 num7 = 0;
                 num8 = -1;
             }
             for (int i = num7; i <= num8; i++)
             {
                 DeviceBitmap   deviceBitmap;
                 int            imageHeight;
                 HighlightState hover;
                 ImageResource  image = this.historyStack.UndoStack[i].Image;
                 if (image != null)
                 {
                     deviceBitmap = ImageResourceUtil.GetDeviceBitmap(image);
                 }
                 else
                 {
                     deviceBitmap = null;
                 }
                 if (deviceBitmap != null)
                 {
                     imageHeight = (deviceBitmap.PixelSize.Width * this.imageHeight) / deviceBitmap.PixelSize.Height;
                 }
                 else
                 {
                     imageHeight = this.imageHeight;
                 }
                 if (i == (this.historyStack.UndoStack.Count - 1))
                 {
                     hover = HighlightState.Checked;
                 }
                 else if (i == this.undoItemHighlight)
                 {
                     hover = HighlightState.Hover;
                 }
                 else
                 {
                     hover = HighlightState.Default;
                 }
                 RectInt32 bounds = new RectInt32(0, i * this.itemHeight, this.ViewWidth, this.itemHeight);
                 this.selectionHighlightRenderer.HighlightState = hover;
                 this.selectionHighlightRenderer.RenderBackground(dc, bounds);
                 PaintDotNet.UI.Media.Brush embeddedTextBrush = this.selectionHighlightRenderer.EmbeddedTextBrush;
                 if (deviceBitmap != null)
                 {
                     nullable = null;
                     dc.DrawBitmap(deviceBitmap, new RectDouble?(new RectInt32(bounds.X + num, bounds.Y + num2, imageHeight, this.imageHeight)), 1.0, BitmapInterpolationMode.Linear, nullable);
                 }
                 int       x     = (num + num3) + imageHeight;
                 RectInt32 num17 = new RectInt32(x, bounds.Y, this.ViewWidth - x, this.itemHeight);
                 nullable2 = null;
                 TextLayout textLayout = UIText.CreateLayout(dc, this.historyStack.UndoStack[i].Name, this.Font, nullable2, HotkeyRenderMode.Hide, (double)num17.Width, (double)num17.Height);
                 textLayout.WordWrapping       = WordWrapping.Wrap;
                 textLayout.ParagraphAlignment = ParagraphAlignment.Center;
                 UIText.AdjustFontSizeToFitLayoutSize(dc, textLayout, (double)num17.Width, (double)num17.Height, 0.6);
                 dc.DrawTextLayout(num17.Location, textLayout, embeddedTextBrush, DrawTextOptions.None);
             }
             RectInt32 redoViewRectangle = this.RedoViewRectangle;
             dc.FillRectangle(redoViewRectangle, slateGrayBrush);
             RectInt32 num10 = RectInt32.Intersect(a, redoViewRectangle);
             if ((num10.Width > 0) && (num10.Height > 0))
             {
                 ItemType type2;
                 this.ViewPointToStackIndex(num10.Location, out type2, out num11);
                 this.ViewPointToStackIndex(new PointInt32(num10.Left, num10.Bottom - 1), out type2, out num12);
             }
             else
             {
                 num11 = 0;
                 num12 = -1;
             }
             for (int j = num11; j <= num12; j++)
             {
                 DeviceBitmap bitmap2;
                 int          num20;
                 PaintDotNet.UI.Media.Brush inactiveCaptionText;
                 ImageResource imageResource = this.historyStack.RedoStack[j].Image;
                 if (imageResource != null)
                 {
                     bitmap2 = ImageResourceUtil.GetDeviceBitmap(imageResource);
                 }
                 else
                 {
                     bitmap2 = null;
                 }
                 if (bitmap2 != null)
                 {
                     num20 = (bitmap2.PixelSize.Width * this.imageHeight) / bitmap2.PixelSize.Height;
                 }
                 else
                 {
                     num20 = this.imageHeight;
                 }
                 RectInt32 num21 = new RectInt32(0, redoViewRectangle.Top + (j * this.itemHeight), this.ViewWidth, this.itemHeight);
                 if (j == this.redoItemHighlight)
                 {
                     this.selectionHighlightRenderer.HighlightState = HighlightState.Hover;
                     this.selectionHighlightRenderer.RenderBackground(dc, num21);
                     inactiveCaptionText = this.selectionHighlightRenderer.EmbeddedTextBrush;
                 }
                 else
                 {
                     inactiveCaptionText = PaintDotNet.UI.Media.SystemBrushes.InactiveCaptionText;
                 }
                 if (bitmap2 != null)
                 {
                     nullable = null;
                     dc.DrawBitmap(bitmap2, new RectDouble?(new RectInt32(num21.X + num, num21.Y + num2, num20, this.imageHeight)), 1.0, BitmapInterpolationMode.Linear, nullable);
                 }
                 int       num22 = (num + num3) + num20;
                 RectInt32 num23 = new RectInt32(num22, num21.Y, this.ViewWidth - num22, this.itemHeight);
                 nullable2 = null;
                 TextLayout layout2 = UIText.CreateLayout(dc, this.historyStack.RedoStack[j].Name, this.Font, nullable2, HotkeyRenderMode.Hide, (double)num23.Width, (double)num23.Height);
                 layout2.WordWrapping       = WordWrapping.NoWrap;
                 layout2.ParagraphAlignment = ParagraphAlignment.Center;
                 layout2.FontStyle          = PaintDotNet.DirectWrite.FontStyle.Italic;
                 UIText.AdjustFontSizeToFitLayoutSize(dc, layout2, (double)num23.Width, (double)num23.Height, 0.6);
                 dc.DrawTextLayout(num23.Location, layout2, inactiveCaptionText, DrawTextOptions.None);
             }
         }
     }
     base.OnRender(dc, clipRect);
 }
コード例 #6
0
        private PlacedBitmap GetOrCreateFontPreview(string gdiFontName, float fontSize, PaintDotNet.UI.Media.Brush textBrush)
        {
            PlacedBitmap bitmap;
            TupleStruct <string, float, PaintDotNet.UI.Media.Brush> key = TupleStruct.Create <string, float, PaintDotNet.UI.Media.Brush>(gdiFontName, fontSize, textBrush);
            Dictionary <TupleStruct <string, float, PaintDotNet.UI.Media.Brush>, PlacedBitmap> fontPreviewRenderCache = this.fontPreviewRenderCache;

            lock (fontPreviewRenderCache)
            {
                this.fontPreviewRenderCache.TryGetValue(key, out bitmap);
            }
            if (bitmap == null)
            {
                bitmap = this.CreateFontPreview(gdiFontName, fontSize, textBrush);
                Dictionary <TupleStruct <string, float, PaintDotNet.UI.Media.Brush>, PlacedBitmap> dictionary2 = this.fontPreviewRenderCache;
                lock (dictionary2)
                {
                    if (this.fontPreviewRenderCache.ContainsKey(key))
                    {
                        bitmap.Dispose();
                        return(this.fontPreviewRenderCache[key]);
                    }
                    this.fontPreviewRenderCache.Add(key, bitmap);
                }
            }
            return(bitmap);
        }
コード例 #7
0
        private void DrawComboBoxItem(DrawItemEventArgs e)
        {
            HighlightState hover;
            string         fontName = (string)base.ComboBox.Items[e.Index];
            bool           flag     = (e.State & DrawItemState.Selected) > DrawItemState.None;
            bool           flag2    = this.hasBeenShown && (e.Bounds.Width >= (base.ComboBox.DropDownWidth / 2));

            if (!flag2)
            {
                hover = HighlightState.Default;
            }
            else if (flag)
            {
                hover = HighlightState.Hover;
            }
            else
            {
                hover = HighlightState.Default;
            }
            Color selectionBackColor = SelectionHighlight.GetSelectionBackColor(hover);
            int   num  = UIUtil.ScaleWidth(3);
            int   num2 = num;
            int   num3 = -1;

            this.selectionHighlightRenderer.HighlightState = hover;
            using (IDrawingContext context = DrawingContextUtil.FromGraphics(e.Graphics, e.Bounds, false, FactorySource.PerThread))
            {
                RenderLayer layer = new RenderLayer();
                context.Clear(new ColorRgba128Float?((ColorRgba128Float)PaintDotNet.Imaging.SystemColors.Window));
                this.selectionHighlightRenderer.RenderBackground(context, e.Bounds.ToRectFloat());
                SizedFontProperties        menu      = this.systemFonts.Menu;
                PaintDotNet.UI.Media.Brush textBrush = this.selectionHighlightRenderer.EmbeddedTextBrush;
                TextLayout textLayout = UIText.CreateLayout(context, fontName, menu, null, HotkeyRenderMode.Ignore, (double)(e.Bounds.Width - num2), (double)e.Bounds.Height);
                textLayout.ParagraphAlignment = ParagraphAlignment.Center;
                textLayout.WordWrapping       = WordWrapping.NoWrap;
                int num5 = num + e.Bounds.X;
                context.DrawTextLayout((double)num5, (double)(e.Bounds.Y + num3), textLayout, textBrush, DrawTextOptions.None);
                ITextLayout  cachedOrCreateResource = context.GetCachedOrCreateResource <ITextLayout>(textLayout);
                int          num4   = (int)Math.Ceiling((double)(num5 + cachedOrCreateResource.Metrics.WidthMax));
                PlacedBitmap bitmap = this.TryGetFontPreview(fontName, 16f, textBrush);
                if (bitmap == null)
                {
                    IntPtr listHwnd = UIUtil.GetListBoxHwnd(base.ComboBox);
                    Action callback = delegate {
                        try
                        {
                            PlacedBitmap bitmap = this.GetOrCreateFontPreview(fontName, 16f, textBrush);
                            if (listHwnd != IntPtr.Zero)
                            {
                                this.ComboBox.BeginInvoke(() => UIUtil.InvalidateHwnd(listHwnd));
                            }
                        }
                        catch (Exception)
                        {
                        }
                    };
                    if (this.backgroundThread == null)
                    {
                        this.backgroundThread = new ThreadDispatcher(ApartmentState.MTA);
                    }
                    this.backgroundThread.Enqueue(QueueSide.Front, callback).Observe();
                }
                if (flag2 && (bitmap != null))
                {
                    PaintDotNet.UI.Media.Brush brush;
                    RectFloat num7;
                    RectFloat num6 = new RectFloat((float)((e.Bounds.Right - num) - bitmap.Bitmap.Size.Width), num3 + ((float)Math.Floor((double)((e.Bounds.Y + ((e.Bounds.Height - bitmap.LayoutRect.Height) / 2.0)) - bitmap.LayoutRect.Top))), (float)bitmap.Bitmap.Size.Width, (float)bitmap.Bitmap.Size.Height);
                    if (num6.Left > num4)
                    {
                        num7  = num6;
                        brush = null;
                    }
                    else
                    {
                        num7    = num6;
                        num7.X += num4 - num6.X;
                        num7.X  = (float)Math.Ceiling((double)num7.X);
                        LinearGradientBrush brush2 = new LinearGradientBrush {
                            ColorInterpolationMode = ColorInterpolationMode.SRgbLinearInterpolation,
                            SpreadMethod           = GradientSpreadMethod.Pad
                        };
                        brush2.GradientStops.Add(new GradientStop(Color.White, 0.0));
                        brush2.GradientStops.Add(new GradientStop(Color.White, ((double)(e.Bounds.Width - UIUtil.ScaleWidth(0x18))) / ((double)e.Bounds.Width)));
                        brush2.GradientStops.Add(new GradientStop(Color.Transparent, 1.0));
                        brush2.EndPoint = new PointDouble((double)e.Bounds.Width, 0.0);
                        brush           = brush2;
                    }
                    using (context.CreateLayer(null))
                    {
                        context.PushLayer(layer, new RectDouble?(num7), null, AntialiasMode.Aliased, new Matrix3x2Double?(Matrix3x2Float.Identity), 1.0, brush, LayerOptions.None);
                        context.DrawBitmap(bitmap.DeviceBitmap, new RectDouble?(num7), 1.0, BitmapInterpolationMode.Linear, null);
                        context.PopLayer();
                    }
                }
            }
        }
コード例 #8
0
ファイル: RollControl.cs プロジェクト: ykafia/Paint.Net4
        private void Draw3DLine(IDrawingContext dc, double rx, double ry, double scale, double xs, double ys, double zs, double xe, double ye, double ze, PaintDotNet.UI.Media.Brush brush, double thickness)
        {
            double sinAmount = Math.Sqrt((rx * rx) + (ry * ry));

            if (sinAmount != 0.0)
            {
                double a        = Math.Atan2(ry, rx);
                double sinAngle = Math.Sin(a);
                double cosAngle = Math.Cos(a);
                this.Transform(sinAngle, cosAngle, sinAmount, Math.Cos(Math.Asin(sinAmount)), ref xs, ref ys, ref zs);
                this.Transform(sinAngle, cosAngle, sinAmount, Math.Cos(Math.Asin(sinAmount)), ref xe, ref ye, ref ze);
            }
            xs *= scale;
            xe *= scale;
            ys *= scale;
            ye *= scale;
            if ((ze < 0.03) && (zs < 0.03))
            {
                dc.DrawLine(xs, ys, xe, ye, brush, thickness);
            }
        }