public ScaledSurface(ISurface original, double fu, double fv) { this.fu = fu; this.fv = fv; this.original = original; scale = ModOp2D.Scale(fu, fv); unscale = scale.GetInverse(); }
/// <summary> /// Clips the bitmap according to the provided shape and plane. The BitmapBits are replaced by /// transparent pixels, the original bits are lost. Setting another clip area doesn't restore already clipped /// pixels. (Ofcourse undo restores the original bitmap bits) /// </summary> /// <param name="plane">The plane as a reference system for the shape</param> /// <param name="shape">The shape for the clip operation</param> public void Clip(Plane plane, CompoundShape shape) { #if !WEBASSEMBLY Plane pln = new Plane(location, directionWidth, directionHeight); CompoundShape prsh = shape.Project(plane, pln); ModOp2D m = ModOp2D.Scale(bitmap.Width / directionWidth.Length, -bitmap.Height / directionHeight.Length); prsh = prsh.GetModified(m); m = ModOp2D.Translate(0, bitmap.Height); prsh = prsh.GetModified(m); GraphicsPath gp = prsh.CreateGraphicsPath(); using (new Changing(this)) { Region rg = new Region(gp); Bitmap clone = bitmap.Clone() as Bitmap; Graphics graphics = Graphics.FromImage(bitmap); graphics.Clear(Color.FromArgb(0, 0, 0, 0)); graphics.SetClip(rg, CombineMode.Replace); graphics.DrawImage(clone, new System.Drawing.Point(0, 0)); graphics.Dispose(); } #endif }
public override ModOp2D ReverseOrientation() { boxedSurfaceEx = null; along.Reverse(); return(ModOp2D.Translate(1, 0) * ModOp2D.Scale(-1, 1)); }