使位图图像清晰

时间:2016-07-21 09:21:52

标签: c# wpf image

我有一个应用程序c#wpf,我使用Image Bitmap。

我有一个Byte [],其中包含用于以灰度绘制图像的值(0或255)。

示例:

int heigth = 5;
int width = 5;
Byte[] image = new Byte[]
    { 255,   0, 255,   0, 255,
        0, 255, 255, 255,   0,
      255, 255,   0, 255, 250,
        0, 255, 255, 255,   0,
      255,   0, 255,   0, 255};

对应图像

Image pattern

要在我的应用程序中显示此图像,我就这样做了:

XAML:

<Border Style="{StaticResource BorderStyle}">
    <Image Source="{Binding BlockPicture, Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"  />
</Border>

C#:

private BitmapSource _blockPicture;
public BitmapSource BlockPicture
{
    get
    {
        return _blockPicture;
    }
    private set
    {
        _blockPicture = value;
        OnPropertyChanged("BlockPicture");
    }
}

private BitmapSource LoadImage(int w, int h, byte[] matrix)
{
    if (matrix == null || matrix.Length == 0)
        return null;

    var format = PixelFormats.Gray8;
    var stride = (w * format.BitsPerPixel + 7) / 8;
    return BitmapSource.Create(w, h, 96, 96, format, null, matrix, stride);
}

BlockPicture = LoadImage(width, heigth , image);

它的工作正常,但是当显示图像时,它非常难看并且分散。

Displayed image

我能做些什么才能让画面干净利落?

1 个答案:

答案 0 :(得分:3)

您可以指定BitmapScalingMode

<Image RenderOptions.BitmapScalingMode="NearestNeighbor" />