有很多关于呈现高质量图形的帖子,比如这篇:
我需要在使用GDI+绘制约6k个线条和椭圆的图形时,以大约10fps的帧率呈现。因此,我需要我的图形具有尽可能低的质量属性。
这是我所做的:
public static class GraphicsExtensions
{
public static void ToHighQuality(this Graphics graphics)
{
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
}
public static void ToLowQuality(this Graphics graphics)
{
graphics.InterpolationMode = InterpolationMode.Low;
graphics.CompositingQuality = CompositingQuality.HighSpeed;
graphics.SmoothingMode = SmoothingMode.HighSpeed;
graphics.TextRenderingHint = TextRenderingHint.SystemDefault;
graphics.PixelOffsetMode = PixelOffsetMode.HighSpeed;
}
}
我有遗漏某些东西吗,还是这是图形属性的最佳极值?
使用较低模式绘制时,我每秒绘制5帧(202毫秒/帧),而使用较高模式时,我每秒绘制3帧(330毫秒/帧)。
我觉得差别不大,但我已经将性能问题减少到仅绘制...
一些数字:
- 1650次调用DrawLine
- 6600次调用FillEllipse
GraphicsPath
对象。 - leppie