2012-08-29 26 views
0

我正在使用控件繪畫事件在我的應用程序中繪製圖形對象。所有對象的大小以毫米爲單位存儲,因此我使用「毫米」作爲圖形對象的PageUnit。出於某種原因,當我繪製一個DashStyle而非實體的形狀時,它會以非常意想不到的比例繪製。以意想不到的比例繪製的虛線形狀

在下面的代碼示例中,我希望看到兩條線彼此重疊,但我得到的是紅色虛線在更大的範圍內繪製在其他地方。

任何想法我失蹤?

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); 
     } 

    } 
} 

因爲我是新的我不能上傳截圖。

+1

必須有更多的比什麼是你的問題用的,因爲如果我執行代碼張貼的問題線被繪製在另一個之上。 – pdriegen

+0

我想你是對的。我試圖在不同的機器上運行同一個可執行文件,並且在其中一些機器上我得到了我期待的結果。謝天謝地,我設法找到了這個問題的解決方案,但我仍然不知道是什麼原因造成的。我只是在別人遇到這個問題時發佈一個答案。 – gaz54

回答

0

經過幾次測試後,這看起來像是一種只在特定的OS /框架上發生了mybe的bug。

什麼設法解決我這是將下面的行繪製形狀前:

e.Graphics.ScaleTransform(1, 1);