2017-10-10 78 views
0

我試圖進行,並通過使用圖片框圖形在C#中繪製特定對角線

這裏畫出具體的一種線是我的願景:

diagonals

這裏是我迄今爲止嘗試:

//int nx = 9, ny = 9; 
float dx = (float)PictureBox.Width/8; 
float dy = (float)PictureBox.Height/5; 

int x1 = 0; 
int y1 = 1; 
int x2 = 1; 
int y2 = 0; 

//Pen Paint Stlye 
PenBlack.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid; 

//0 < (9 + 9) 
while (y1 < (9 + 9)) 
{ 
    g.DrawLine(PenBlack, x1 * dx, y1 * dy, x2 * dx, y2 * dy); 
    y1++; 
    x2++; 
} 

而是出於這個我得到:

output

本質上我希望它是精確的,甚至在PictureBox的大小改變。

+1

你能澄清? 「我想要它確切」是什麼意思?這兩個截圖看起來非常相似。 – Charleh

+0

好吧,如果你看第二個,對角線不會像第一個一樣精確地對準方形角落。 – Dice

+0

@Charleh對角線的兩端不會碰到第二張圖片中的網格交叉點,但它們在第一張圖片中完成。 –

回答

0

只要電網是錯誤的。 我加2個全局變量:

int nx = 12, ny = 10; 

NX是多少平方都在X軸

和紐約是多少平方都在Y軸

本質上,這與隨之而來我的網格代碼:

//Divide WIDTH x Axis int 3 columns 
     int x1 = TAPBxCanvas.Width/2; 

     //Divide HEIGHT y Axis into 3 rows; 
     int y1 = TAPBxCanvas.Height/2; 

     //Find the Second point 


     Point width = new Point(x1,y1); 

     // - - - 

     float dx = (float)TAPBxCanvas.Width/nx; 
     float dy = (float)TAPBxCanvas.Height/ny; 
     PenGray.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid; 

     for (int ix = 0; ix <= nx; ix++) 
     { 
      g.DrawLine(PenGray, ix * dx, 0, ix * dx, TAPBxCanvas.Height); 
     } 

     for (int iy = 0; iy <= ny; iy++) 
     { 
      g.DrawLine(PenGray, 0, iy * dy, TAPBxCanvas.Width, iy * dy); 
     } 

添加了新的浮點值的對角線,劃分在Y方2,以便將對角線重疊2個正方形:

float DnY = ny/2; 

,並劃分了高度與DNY的結果:

float dy = (float)TAPBxCanvas.Height/DnY); 

一切保持不變,而我得到這個:

Result

3

嘗試:

float dx = (float)PictureBox.Width/9.0f; 
float dy = (float)PictureBox.Height/4.5f; 

當你得到了9x9的方格,並希望1x2的方形山坡......所以dx = xs/(9/1)dy = ys/(9/2)

+0

我明白,但當我插入它,我沒有得到結果我一直在尋找這個:https://imgur.com/a/Ha3H6 經過一番修改後發現它不是錯誤的對角線,而是em後面的網格,所以我修復了它。感謝您的幫助 – Dice