我正在为一个客户的Windows应用程序工作。 他希望能够输入纸板箱的高度,宽度和长度,然后让应用程序自动在屏幕上绘制纸板箱。 我想知道这是否可以用C#完成。 这里是一个样本的纸箱应该怎么看上去都差不多:用c绘制线条/正方形#
请让我知道你的意见,如果别人做了,在过去类似的东西。预先感谢您的帮助。
我正在为一个客户的Windows应用程序工作。 他希望能够输入纸板箱的高度,宽度和长度,然后让应用程序自动在屏幕上绘制纸板箱。 我想知道这是否可以用C#完成。 这里是一个样本的纸箱应该怎么看上去都差不多:用c绘制线条/正方形#
请让我知道你的意见,如果别人做了,在过去类似的东西。预先感谢您的帮助。
我还没有做过那样的事,但在C#中绝对有可能。看起来你的盒子需要两边是宽*高,两边是长*高,襟翼都需要宽/ 2或长/ 2(长/高),以较短者为准。您需要绘制的所有内容应位于System.Drawing
命名空间中,其中包括Rectangle
和Brush
。
当然。您需要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 |
--------- ------------- --------- -------------
这个基本的设置是不正确的 - 你几乎不应该调用Control.CreateGraphics,因为你绘制的任何东西在重绘时都会被覆盖。或者:(1)使用在事件处理程序中提供给你的'Graphics'对象(例如'Control.Paint','PrintDocument.PrintPage'),或者(2)使用'Graphics.FromImage'在位图上绘制并将其分配为PictureBox的图像。 – Justin 2011-03-03 16:09:44
伙计们,谢谢你的帮助,它肯定会帮助我。 @KeithS,.5Z在您的绘图中意味着什么?谢谢 – Laziale 2011-03-03 16:29:54
只有一半的深度。如果箱子的“长”侧的襟翼在中间会遇到一半的深度,为了减少浪费,箱子“短”侧的襟翼是相同的高度。 – KeithS 2011-03-03 16:33:02
一些代码,在窗体上绘制一个矩形(用于用户控件相同的作品):
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 *方法。结合这些使你的艺术作品!
这看起来更像一个标签,而不是一个盒子给我。 – 2011-03-03 15:54:04
你指的是图像的哪个部分?条形码,还是整个桌子般的布局?我们需要更好的规格! – Justin 2011-03-03 15:54:36
如果你把那件东西剪出来并折起来,它会形成一个盒子。 – 2011-03-03 15:56:30