2

リソースを作成せずに、リソース ファイルから作成したイメージの色を変更したい。私の現在の解決策は、必要な色で 2 番目の画像リソースを作成することです。しかし、私は自分のコードでそれを設定したいです。次のように画像をロードします。

    var icon =
       BitmapSourceFromBrush.Convert32(
          (DrawingBrush) Application.Current.FindResource("IconNoframeSettings"));

新しい単色を設定できますか? Convert32 で、DrawingBrush または他の方法に設定しますか?

これが BitmapSourceFromBrush です ( Tim Lovell-Smithの功績):

    public static BitmapSource Convert32(DrawingBrush drawingBrush, int size = 32, int dpi = 96)
    {
        // RenderTargetBitmap = builds a bitmap rendering of a visual
        var pixelFormat = PixelFormats.Pbgra32;
        RenderTargetBitmap rtb = new RenderTargetBitmap(size, size, dpi, dpi, pixelFormat);

        // Drawing visual allows us to compose graphic drawing parts into a visual to render
        var drawingVisual = new DrawingVisual();
        using (DrawingContext context = drawingVisual.RenderOpen())
        {
            // Declaring drawing a rectangle using the input brush to fill up the visual
            context.DrawRectangle(drawingBrush, null, new Rect(0, 0, size, size));
        }

        // Actually rendering the bitmap
        rtb.Render(drawingVisual);
        return rtb;
    }
4

0 に答える 0