我遇到了如何基于某些颜色值创建BitmapImage
?
例如我有字符串“ Black ”所以我需要黑色 BitmapImage 。
怎么做?
谢谢!
- 更新(我把此代码用于 @StephenChung )
我们的想法是使用任何不透明度进行网格化,并且不对其子级应用不透明度。 所以我用我需要的任何颜色创建一个图像并为它应用不透明度。
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;
答案 0 :(得分:4)
您可以从ImageBrush
创建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;
}
答案 1 :(得分:0)
示例:
System.Drawing.Bitmap flag = new System.Drawing.Bitmap(10, 10);
for( int x = 0; x < flag.Height; ++x )
for( int y = 0; y < flag.Width; ++y )
flag.SetPixel(x, y, Color.Black);
for( int x = 0; x < flag.Height; ++x )
flag.SetPixel(x, x, Color.Black);
和转换:
private BitmapImage Bitmap2BitmapImage(Bitmap bitmap)
{
using (MemoryStream ms = new MemoryStream())
{
bitmap.Save(ms, ImageFormat.Png);
ms.Position = 0;
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.StreamSource = ms;
bi.EndInit();
return bi;
}
}