C# 以意外比例绘制虚线形状
我正在使用控件绘制事件在应用程序中绘制图形对象。所有对象的大小都以毫米为单位存储,因此我使用“毫米”作为图形对象的页面单位。出于某种原因,当我使用非实体的DashStyle绘制形状时,它会以非常意外的比例绘制 在下面的代码示例中,我希望看到两条线一条接一条地绘制,但我得到的是红色虚线以更大的比例绘制在其他地方 知道我错过了什么吗C# 以意外比例绘制虚线形状,c#,drawing,gdi+,scale,shapes,C#,Drawing,Gdi+,Scale,Shapes,我正在使用控件绘制事件在应用程序中绘制图形对象。所有对象的大小都以毫米为单位存储,因此我使用“毫米”作为图形对象的页面单位。出于某种原因,当我使用非实体的DashStyle绘制形状时,它会以非常意外的比例绘制 在下面的代码示例中,我希望看到两条线一条接一条地绘制,但我得到的是红色虚线以更大的比例绘制在其他地方 知道我错过了什么吗 using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Tex
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication6
{
public partial class Form1 : Form
{
private Pen solidBlackPen = new Pen(Color.Black, 1);
private Pen dashedRedPen = new Pen(Color.Red, 1) {
DashStyle = DashStyle.Dash
};
private Point point1 = new Point(5, 5);
private Point point2 = new Point(35, 5);
public Form1()
{
InitializeComponent();
this.BackColor = Color.White;
this.Paint += new PaintEventHandler(Form1_Paint);
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.PageUnit = GraphicsUnit.Millimeter;
e.Graphics.DrawLine(solidBlackPen, point1, point2);
e.Graphics.DrawLine(dashedRedPen, point1, point2);
}
}
}
由于我是新手,我无法上传屏幕截图。经过几次测试后,我觉得这就像某种只在特定操作系统/框架上出现的bug 解决这个问题的办法是在绘制形状之前添加以下行:
e.Graphics.ScaleTransform(1, 1);
这个问题肯定比你的问题中可用的问题更多,因为如果我按照发布的方式执行代码,代码线就会相互重叠。我想你是对的。我试着在不同的机器上用不同的操作系统运行相同的可执行文件,在其中一些机器上我确实得到了我所期望的结果。谢天谢地,我设法找到了解决这个问题的办法,但我仍然不知道是什么原因造成的。我会发布一个答案,以防其他人遇到这个问题。