Create BitmapImage and apply to it a specific Color
c#, wpf
Solution
You can create `ImageBrush` from `BitmapSource`:
private BitmapSource CreateBitmapSource(System.Windows.Media.Color color)
{
int width = 128;
int height = width;
int stride = width / 8;
byte[] pixels = new byte[height * stride];
List<System.Windows.Media.Color> colors = new List<System.Windows.Media.Color>();
colors.Add(color);
BitmapPalette myPalette = new BitmapPalette(colors);
BitmapSource image = BitmapSource.Create(
width,
height,
96,
96,
PixelFormats.Indexed1,
myPalette,
pixels,
stride);
return image;
}
Problem
I got stuck how to create `BitmapImage` based on some color value? For example I have string "Black" so I need black BitmapImage. How it could be done? Thank you! -- UPDATES (I put this code for @StephenChung) The idea is to do Grid with any opacity and don't apply opacity to its children. So I create an image by ANY color I need and apply opacity for it. ``` BitmapSource bs = CreateBitmapSource(GetBackgroundColorValue()); // and here I use method of @StaWho CreateBitmapSource() ImageBrush ib2 = new ImageBrush(bs); ib2.Opacity = Opacity; ib2.Stretch = Stretch.Fill; RootGrid.Background = ib2; ```