static PointF Offset(PointF point, SizeF direction, float distance) { return(new PointF() { X = point.X + direction.Width * distance, Y = point.Y + direction.Height * distance, }); }
static SizeF Flip(SizeF point) { return(new SizeF() { Width = -point.Height, Height = point.Width }); }
public SizeF MeasureString(String text, Font font, int width, StringFormat format) { SixLabors.Fonts.FontFamily family = SixLabors.Fonts.SystemFonts.Find(font.Name); //font.Bold //font.Italic //font.Underline //font.Strikeout SixLabors.Fonts.Font fo = new SixLabors.Fonts.Font(family, font.Size); SixLabors.Fonts.RendererOptions ro = new SixLabors.Fonts.RendererOptions(fo); SixLabors.Primitives.SizeF result = SixLabors.Fonts.TextMeasurer.Measure(text, ro); return(new System.Drawing.SizeF(result.Width, result.Height)); }
} // End Function Crop public override System.IO.Stream ResizeImage( System.IO.Stream inputStream, System.IO.Stream outputStream, SaveFormat saveFormat, float ratio, System.Drawing.Size?maxSize) { SixLabors.ImageSharp.Image <SixLabors.ImageSharp.Rgba32> img = SixLabors.ImageSharp.Image.Load(inputStream); SixLabors.Primitives.SizeF oldSizeSize = img.Size(); if (maxSize.HasValue) { float ratioX = (float)maxSize.Value.Width / (float)img.Width; float ratioY = (float)maxSize.Value.Height / (float)img.Width; ratio = ratioX < ratioY ? ratioX : ratioY; } // End if (maxSize.HasValue) SixLabors.Primitives.SizeF newSize = oldSizeSize * ratio; if (outputStream == null) { outputStream = new System.IO.MemoryStream(); } // Compand: whether to compress or expand individual pixel color values img.Mutate(x => x.Resize((SixLabors.Primitives.Size)newSize, KnownResamplers.Bicubic, false)); img.Save(outputStream, GetEncoder(saveFormat)); // NO, no seek, if we're respone.OutputStream if (outputStream.CanSeek) { outputStream.Seek(0, System.IO.SeekOrigin.Begin); } return(outputStream); } // End Function ResizeImage