如何画一个 X? [关闭]

Posted

技术标签:

【中文标题】如何画一个 X? [关闭]【英文标题】:How do I draw an X? [closed] 【发布时间】:2015-10-06 18:47:31 【问题描述】:

所以我试着画一个X:

e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
e.Graphics.DrawLine(new Pen(Color.Black, 1), 
                     this.Width + 20 - 50,  
                     20,  
                     this.Width + 25 - 50, 
                     10);

e.Graphics.DrawLine(new Pen(Color.Black, 1),  
                     this.Width - 20 + 50,  
                     20,  
                     this.Width + 25 - 50, 
                     10);

但它看起来像一把斧头。无论我为第二行代码设置哪个值,都是不对的。

【问题讨论】:

最好的选择:获取纸张列表,绘制矩形并在每个角落写下坐标......否则没有太多的+/-组合用于x坐标尝试所有:) 让我看看能不能找到一支笔。 @AlexeiLevenkov 很好的提示......不幸的是它没有帮助我。如果脑子坏了就不能用笔了哈哈 【参考方案1】:

10 x 10 X 只需添加位置 self

e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
e.Graphics.DrawLine(new Pen(Color.Black, 1), 
                     1,  
                     1,  
                     10, 
                     10);

e.Graphics.DrawLine(new Pen(Color.Black, 1),  
                     1,  
                     10,  
                     10, 
                     1);

【讨论】:

@se13013 只是一个提示:永远不要在每次绘画操作中创建新的笔。绝不!严重地。创建一次并重复使用它。在这种情况下,您甚至可以直接选择 Pens.Black。我说你不应该这样做吗?它会明显影响性能。总结:不要这样做。永远不要这样做......大声笑 @AdrianoRepetti 好的,谢谢。【参考方案2】:
DrawLine(pen, startPoint_X, startPoint_Y, stopPoint_X, stopPoint_Y);

你的两条线是相同的 stopPoint 坐标,所以它会画一个 V。 第二件事是第二行的 X 坐标大于控件的宽度,因此第二行的起点将超出您的控制范围

【讨论】:

以上是关于如何画一个 X? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在ios中自定义推送和弹出动画时将视图传递给另一个控制器? [关闭]

如何通过onclick list项打开带动画的alertdialog? [关闭]

如何在纬度上绘制路基[关闭]

如何使用highchart在x坐标上画一个有两个标签的高图?

MATLAB如何画两个子图共用一个Y轴标签?

如何在HTML5画布上画一个椭圆