public override void Draw(Painter p) { AggPainter painter = p as AggPainter; if (painter == null) { return; } painter.Clear(Color.White); switch (FilterName) { case FilterName.Unknown: painter.RenderSurface.CustomImgSpanGen = null; break; case FilterName.NearestNeighbor: painter.RenderSurface.CustomImgSpanGen = _imgSpanGenNN; break; default: DrawWeightDistributionGraph(p, _lut.WeightArray); painter.RenderSurface.CustomImgSpanGen = _imgSpanGenCustom; break; } VertexProcessing.AffinePlan[] p1 = new VertexProcessing.AffinePlan[] { VertexProcessing.AffinePlan.Translate(-_imgW / 2.0, -_imgH / 2.0), VertexProcessing.AffinePlan.RotateDeg(_rotationDeg), VertexProcessing.AffinePlan.Translate(_imgW / 2.0, _imgH / 2.0), }; p.DrawImage(_orgImg, p1); if (_thumbnailScaleDown > 0 && _thumbnailScaleDown < 1) { using (MemBitmap thumbnail = _orgImg.CreateThumbnailWithSuperSamplingTechnique(_thumbnailScaleDown)) { painter.DrawImage(thumbnail, 400, 300); } } base.Draw(p); }