Можно ли отключить сглаживание в WPF при использовании ImageBru sh?
Учитывая следующий код:
var handleImage = new BitmapImage(new Uri($"pack://application:,,,/Resources/myimage.png"));
var imageBrush = new ImageBrush(handleImage);
imageBrush.AlignmentY = AlignmentY.Top;
imageBrush.AlignmentX = AlignmentX.Left;
imageBrush.Stretch = Stretch.Uniform;
imageBrush.Viewport = new Rect(0, 0, _handleImage.Width, _handleImage.Height);
imageBrush.ViewportUnits = BrushMappingMode.Absolute;
imageBrush.TileMode = TileMode.Tile;
drawingContext.DrawRectangle(imageBrush, null, new Rect(0, 0, width, height));
Дает что-то вроде:
Но я ожидаю:
Сглаживание WPF по умолчанию делает его ужасным. Я пробовал UseLayoutRounding=true
, SnapsToDevicePixels=true
, RenderOptions.SetBitmapScalingMode(this, BitmapScalingMode.HighQuality)
, RenderOptions.SetBitmapScalingMode(this, BitmapScalingMode.NearestNeighbor)
RenderOptions.SetEdgeMode(this, EdgeMode.Unspecified);
в окне. Единственное, что меняет визуальные различия, - это BitmapScalingMode.NearestNeighbor
, однако он по-прежнему выглядит странно, и мозаика перекрывает сама себя.
РЕДАКТИРОВАТЬ: Загрузить полный рабочий образец: WpfImageBrushExample.zip