求助:用C# Graphics画图,出现锯齿,怎么消除

colyn 2013-04-23 10:57:25
我用C#提供的Graphics类画等值云图,由于结果文件提供的数据是四边形信息,我用如下代码实现画图:
g=e.graphics;
g.SmoothingMode = SmoothingMode.AntiAlias;
PointF [] pta=new PointF[4];
aBrush = new SolidBrush(color);
g.FillPolygon(aBrush, pta);
所画的云图锯齿现象明显,提供两幅图,一副是我所画的云图,另一幅是用TecPlot所画的图;对比一下,TecPlot所画的图平滑效果好。有没好的方法能消除锯齿?如果用我这方法即使用插值,增加点数,也还是有锯齿现象;也试过用三角形绘制,效果也差不多。

图片上传不了。
...全文
2812 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
K-dash 2014-10-14
  • 打赏
  • 举报
回复
引用 9 楼 hatchgavin 的回复:
private void btnHide_Paint(object sender, PaintEventArgs e) { e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //使绘图质量最高,即消除锯齿 e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; e.Graphics.CompositingQuality = CompositingQuality.HighQuality; System.Drawing.Drawing2D.GraphicsPath buttonPath = new System.Drawing.Drawing2D.GraphicsPath(); System.Drawing.Rectangle newRectangle = btnHide.ClientRectangle; buttonPath.AddEllipse(newRectangle); btnHide.Region = new System.Drawing.Region(buttonPath); } 请问1楼。我加上这三句话了,为什么我的 圆形图出来后还是有锯齿的呢?
我和9楼的一样,估计是那个抗锯齿只对Drawing的有效,Regin的无效
QQ83667664 2014-09-25
  • 打赏
  • 举报
回复
引用 6 楼 sxl514286339 的回复:
消除 锯齿前 消除 锯齿后 用的就是 一楼 的代码。
能不能共享代码出来呢
hatchgavin 2014-05-05
  • 打赏
  • 举报
回复
private void btnHide_Paint(object sender, PaintEventArgs e) { e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //使绘图质量最高,即消除锯齿 e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; e.Graphics.CompositingQuality = CompositingQuality.HighQuality; System.Drawing.Drawing2D.GraphicsPath buttonPath = new System.Drawing.Drawing2D.GraphicsPath(); System.Drawing.Rectangle newRectangle = btnHide.ClientRectangle; buttonPath.AddEllipse(newRectangle); btnHide.Region = new System.Drawing.Region(buttonPath); } 请问1楼。我加上这三句话了,为什么我的 圆形图出来后还是有锯齿的呢?
SeeYou孙悟空 2014-05-04
  • 打赏
  • 举报
回复
尼玛 这就送分题目啊,可以手慢了被一楼给抢了,一楼正解。
  • 打赏
  • 举报
回复
楼主在用这个画图,可以共享一下代码吗、
吹风的兔子 2014-05-03
  • 打赏
  • 举报
回复
消除 锯齿前


消除 锯齿后


用的就是 一楼 的代码。
吹风的兔子 2014-05-03
  • 打赏
  • 举报
回复
一楼是 正确的!
Trent1985 2013-04-24
  • 打赏
  • 举报
回复
楼主,1楼正解!
gxingmin 2013-04-24
  • 打赏
  • 举报
回复
g.SmoothingMode = SmoothingMode.AntiAlias;  //使绘图质量最高,即消除锯齿
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.CompositingQuality = CompositingQuality.HighQuality;
加上上面几句,应该能消除锯齿
colyn 2013-04-24
  • 打赏
  • 举报
回复
引用 1 楼 gxingmin 的回复:
C# code?123g.SmoothingMode = SmoothingMode.AntiAlias; //使绘图质量最高,即消除锯齿g.InterpolationMode = InterpolationMode.HighQualityBicubic;g.CompositingQuality = CompositingQuality.HighQuality; ……
因为是将四边形连起来,所以在颜色分界的地方必然有锯齿,没办法消除,觉得用graphics对象绘图消除不了锯齿。
colyn 2013-04-24
  • 打赏
  • 举报
回复
因为是将四边形连起来,所以在颜色分界的地方必然有锯齿,没办法消除,觉得用graphics对象绘图消除不了锯齿

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧