Browse Source

X11IconLoader needs to scale the icon into our hardcoded size (#20817)

pull/20819/head
Nikita Tsukanov 3 weeks ago
committed by GitHub
parent
commit
45b0eb33b8
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 12
      src/Avalonia.X11/X11IconLoader.cs

12
src/Avalonia.X11/X11IconLoader.cs

@ -41,9 +41,15 @@ namespace Avalonia.X11
_height = Math.Min(bitmap.PixelSize.Height, 128); _height = Math.Min(bitmap.PixelSize.Height, 128);
var pixels = new uint[_width * _height]; var pixels = new uint[_width * _height];
fixed (void* pPixels = pixels) using (var rtb = new RenderTargetBitmap(new PixelSize(128, 128)))
bitmap.CopyPixels(new LockedFramebuffer((IntPtr)pPixels, new PixelSize(_width, _height), _width * 4, {
new Vector(96, 96), PixelFormat.Bgra8888, AlphaFormat.Premul, null)); using (var ctx = rtb.CreateDrawingContext(true))
ctx.DrawImage(bitmap, new Rect(rtb.Size));
fixed (void* pPixels = pixels)
rtb.CopyPixels(new LockedFramebuffer((IntPtr)pPixels, new PixelSize(_width, _height), _width * 4,
new Vector(96, 96), PixelFormat.Bgra8888, AlphaFormat.Premul, null));
}
Data = new UIntPtr[_width * _height + 2]; Data = new UIntPtr[_width * _height + 2];
Data[0] = new UIntPtr((uint)_width); Data[0] = new UIntPtr((uint)_width);

Loading…
Cancel
Save