【问题标题】:coarse lines - Winforms, WPF, c#粗线条 - Winforms、WPF、c#
【发布时间】:2015-03-28 23:33:25
【问题描述】:

我正在编写一个非常简单的屏幕绘图工具。当我将粗细设置为低值时,它看起来很平滑,但是当我增大尺寸时,线条变得超级锯齿状(见下文)

            Line line = new Line();
            Brush brush = new SolidColorBrush(Colors.Red); 
            line.Stroke = brush;
            line.X1 = currentPoint.X;
            line.Y1 = currentPoint.Y;
            line.X2 = e.GetPosition(this).X;
            line.Y2 = e.GetPosition(this).Y;
            line.StrokeThickness = 40;
            currentPoint = e.GetPosition(this);
            paintSurface.Children.Add(line);

图片见:http://i.stack.imgur.com/jVTqD.jpg(还不能发帖,我是新人)

我的原始应用是一个 WinForms 应用。我试图在 WPF 中重做它,希望它会更好,但以上来自 WPF 应用程序 - 完全相同的问题。有什么办法让我的线条更好看?

WinForm 中的代码:

 penDraw = new Pen(Color.Black, 20);
 using (Graphics g = this.CreateGraphics())
 {
      g.DrawLine(penDraw, pt, ptLast);
 }

【问题讨论】:

    标签: c# .net wpf winforms


    【解决方案1】:

    这样做了,原来你只需要将LineStrokeStartLineCapStrokeEndLineCap 属性设置为PenLineCap.Round,还要确保你得到的是相对于你的发件人而不是你的窗口的位置

                var canvas = (Canvas)sender;
                Line line = new Line();
                line.Stroke = new SolidColorBrush(Colors.Red);
                line.StrokeStartLineCap = PenLineCap.Round;
                line.StrokeEndLineCap = PenLineCap.Round;
                line.X1 = currentPoint.X;
                line.Y1 = currentPoint.Y;
                line.X2 = e.GetPosition(canvas).X;
                line.Y2 = e.GetPosition(canvas).Y;
                line.StrokeThickness = 40;
                currentPoint = e.GetPosition(canvas);
                canvas.Children.Add(line);
    

    结果:

    【讨论】:

    • 我尝试了这两个建议 - 两者都没有改变任何东西。
    • 这太棒了。很想投票,但首先需要更多的声誉!你知道类似的东西是否可以应用于 WinForms?
    • @PaulGitter 这些属性也存在于 Pen 中,所以几乎相同
    • 再次感谢您。很大的帮助。只需添加 penDraw.StartCap = System.Drawing.Drawing2D.LineCap.Round; penDraw.EndCap = System.Drawing.Drawing2D.LineCap.Round;修复一切。
    猜你喜欢
    • 2021-11-24
    • 2017-10-04
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多