2011-03-03 101 views
1

我正在爲一個客戶的Windows應用程序工作。 他希望能夠輸入紙板箱的高度,寬度和長度,然後讓應用程序自動在屏幕上繪製紙板箱。 我想知道這是否可以用C#完成。 這裏是一個樣本的紙箱應該怎麼看上去都差不多:用c繪製線條/正方形#

enter image description here

請讓我知道你的意見,如果別人做了,在過去類似的東西。預先感謝您的幫助。

+1

這看起來更像一個標籤,而不是一個盒子給我。 – 2011-03-03 15:54:04

+0

你指的是圖像的哪個部分?條形碼,還是整個桌子般的佈局?我們需要更好的規格! – Justin 2011-03-03 15:54:36

+1

如果你把那件東西剪出來並折起來,它會形成一個盒子。 – 2011-03-03 15:56:30

回答

0

我還沒有做過那樣的事,但在C#中絕對有可能。看起來你的盒子需要兩邊是寬*高,兩邊是長*高,襟翼都需要寬/ 2或長/ 2(長/高),以較短者爲準。您需要繪製的所有內容應位於System.Drawing命名空間中,其中包括RectangleBrush

-1

當然。您需要System.Drawing命名空間中的方法,以及大多數Winform控件的CreateGraphics()方法。

基本設置是在窗體上放置一些控件,如Panel或PictureBox。當畫出框時,您將使用該控件的CreateGraphics()方法獲取表示空間的對象,屏幕上的控件的大小可以在其中繪製。然後,您將在屏幕上以適當的形狀繪製線條和/或矩形(我將爲您解開計算盒子如何分解爲連接的紙板面板的數學)。查找DrawRect的MSDN文檔以及Brush(您將用它來確定行的外觀)。

編輯:好的,我會給你數學。對於長度爲X,高度Y,深度Z的盒子,面板分解如下:

--------- ------------- --------- ------------- 
| Zx.5Z | Xx.5Z | Zx.5Z | Xx.5Z | 
|---------+-------------+---------+-------------+ 
|   |    |   |    | 
| ZxY |  XxY  | ZxY |  XxY  | 
|   |    |   |    | 
|---------+-------------+---------+-------------+ 
| Zx.5Z | Xx.5Z | Zx.5Z | Xx.5Z | 
--------- ------------- --------- ------------- 
+2

這個基本的設置是不正確的 - 你幾乎不應該調用Control.CreateGraphics,因爲你繪製的任何東西在重繪時都會被覆蓋。或者:(1)使用在事件處理程序中提供給你的'Graphics'對象(例如'Control.Paint','PrintDocument.PrintPage'),或者(2)使用'Graphics.FromImage'在位圖上繪製並將其分配爲PictureBox的圖像。 – Justin 2011-03-03 16:09:44

+0

夥計們,謝謝你的幫助,它肯定會幫助我。 @KeithS,.5Z在您的繪圖中意味着什麼?謝謝 – Laziale 2011-03-03 16:29:54

+0

只有一半的深度。如果箱子的「長」側的襟翼在中間會遇到一半的深度,爲了減少浪費,箱子「短」側的襟翼是相同的高度。 – KeithS 2011-03-03 16:33:02

0

一些代碼,在窗體上繪製一個矩形(用於用戶控件相同的作品):

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

     SetStyle(ControlStyles.UserPaint, true); 
     SetStyle(ControlStyles.AllPaintingInWmPaint, true);  
    } 

    private void Form1_Paint(object sender, PaintEventArgs e) 
    { 
     e.Graphics.DrawRectangle(Pens.Black, 10, 10, 100, 100); 
    } 
} 

看看其他的e.Graphs.Draw *方法。結合這些使你的藝術作品!