在用GDI裁剪时候出现的问题,在xp中很好,到win7下出现了问题

ajiuazhuo 2015-08-31 03:15:01
我画了许多的平行线 然后想用已有的路径裁剪这些线,在Xp中裁剪没有问题,
但是在win7下出现有些线没有裁剪成功的现象,如下图所示:

在查找问题过程中发现,出现线没有被裁剪的情况,均在画实线且宽度小于等于1.5的情况下发生!
请各位大侠指点问题出在哪~

代码很简单,就下面几行

Region r = g.Clip;
g.SetClip(gp);

Pen p= new Pen(Color.Black);
for (int i = 0; i < _PointsList.Count; i++)
{
PointF[] pts = _PointsList[i];
GraphicsPath gp1 = new GraphicsPath();
gp1.AddLine(pts[0], pts[1]);
g.DrawPath(p, gp1);
gp1.Dispose();
}

g.Clip = r;
...全文
169 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ajiuazhuo 2015-09-02
  • 打赏
  • 举报
回复
这个问题出现的真是很奇怪 没想到这样子可以解决~
ajiuazhuo 2015-09-02
  • 打赏
  • 举报
回复
嗯 谢谢 这样子确实可以解决!
ajiuazhuo 2015-09-01
  • 打赏
  • 举报
回复
引用 1 楼 effun 的回复:
改用FillRegion加HatchBrush组合试试
用HatchBrush确实不会出现这样的问题,但是我现在想做线填充,可以改变线的角度和样式~
effun 2015-09-01
  • 打赏
  • 举报
回复

            var g = e.Graphics;

            SmoothingMode sm;
            
            sm = (SmoothingMode)comboBox1.SelectedItem;


            GraphicsPath path = new GraphicsPath();

            path.AddLine(100, 100, 120, 110);
            path.AddLine(180, 110, 180, 130);
            path.AddLine(190, 130, 160, 140);

            path.AddLine(160, 140, 160, 170);
            path.AddLine(160, 170, 100, 170);

            path.AddLine(100, 170, 105, 250);
            path.AddArc(240, 190, 60, 60, 90, -90);
            path.AddLine(300, 70, 80, 90);
            path.AddLine(80, 90, 100, 100);

            Pen pen = new Pen(Color.Gray, 1.5f);

            g.SmoothingMode = sm;

            g.DrawPath(pen, path);

            g.SetClip(path);


            for (int x = -30; x < 400; x += 8)
            {
                int x1 = x + 200;

                g.DrawLine(pen, x, 310, x1, 0);
                g.DrawLine(pen, 400 - x, 310, 400 - x1, 0);
            }

            path.Dispose();
            pen.Dispose();
effun 2015-09-01
  • 打赏
  • 举报
回复
用你的代码在Win10下测试过,确实存在问题,不过误打误撞找到了解决办法,只要设置g.SmoothingMode为AntiAlias或HighQuality就可以了。
effun 2015-08-31
  • 打赏
  • 举报
回复
改用FillRegion加HatchBrush组合试试

110,539

社区成员

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

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

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