2011-03-03 110 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 *方法。结合这些使你的艺术作品!