2016-07-21 5 views
0

У меня есть приложение 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

Что я могу сделать, чтобы иметь хорошую картину чистые и острой?

ответ

3

Вы можете указать BitmapScalingMode:

<Image RenderOptions.BitmapScalingMode="NearestNeighbor" /> 
+0

Это именно то, что я хочу. Спасибо ! –

Смежные вопросы