日期:2014-05-18  浏览次数:20961 次

c# winform 画图
我想知道下列图中的功能是怎么实现的,可以说说大约的过程:
这是一个宾馆管理软件,是用delphi写的。

------解决方案--------------------
你确定房间号是画上去的?
------解决方案--------------------
房间号和房间名称应该是固定的吧,其他的是改背景图片??
------解决方案--------------------
花的时候可以画文字呀
------解决方案--------------------
e.Graphics.DrawString();用这个方法可以画字
e.Graphics.DrawImage();用这个方法可以画图
差不多就是这样了,还需要用到什么吗?
------解决方案--------------------
自己写个控件, 四个角可以设置对应图片显示, 背景 + 文字设置这个更加不是问题吧
------解决方案--------------------
GDI+ 
去了解下。
------解决方案--------------------
Button dd;
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 10; i++)
{
dd=new Button();
if (i <= 5)
{
this.dd.Location = new System.Drawing.Point(12, 12 + i * 30);

}
else
{
this.dd.Location = new System.Drawing.Point(96, 12 + (i - 5) * 30);
}


this.dd.Name = "button"+i;

this.dd.Size = new System.Drawing.Size(75, 23);
this.dd.TabIndex = i;
this.dd.Text = "button" + i;
this.dd.UseVisualStyleBackColor = true;
this.Controls.Add(dd);
this.dd.Click += new EventHandler(onMessage_Click);

}
}


public void onMessage_Click(object sender, EventArgs e)
{
Button but = ((Button)sender);
MessageBox.Show(but.Text);
}

 这些代码能生成一些按钮, 这种方法也能生成其他的一些控件。(希望对你有用)至于图片怎样放上去,还不清楚。知道了告诉我。。。



------解决方案--------------------
up+mark+study
------解决方案--------------------
先制作一些带图标的图片,再通过程序在图片上面写上字,这个简单的
------解决方案--------------------
用C#比较简单的办法是,定义三个从panel派生的组件,定义几个属性,包括有房间类型,房间号,占用标志,预定标志,等等等等

然后在窗体构建的时候,创建这些组件按顺序排好就OK了啊,那些笑脸什么的,可以在组件里贴图,也可以用GDI+在Panel的重绘事件里画,很简单的。
------解决方案--------------------
我以前做软件界面的时候都是自己做好图片然后切图分块放上去。速度和效都还可以了。
------解决方案--------------------
自己写的控件吧
------解决方案--------------------
图片应该是做好的,下次的改的时候也方便呀~不然每次都要重新改代码?
他只是根据不能状态显示不同的图片而已吧~
------解决方案--------------------
controls["labelname"]找到label,修改背景图片

protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
BackColor = Color.Transparent;
Graphics g = e.Graphics;
Pen p = new Pen(Color.Black, 1);
Rectangle rect = ClientRectangle;
rect.Location = new Point(2, 2);
rect.Width = ClientRectangle.Width - 4;
rect.Height = ClientRectangle.Height - 4;
}重绘
------解决方案--------------------
自定义控件
------解决方案--------------------
重载Control(可以是窗体,也可以是自定义控件)的OnPaint事件,计算好相应的坐标,调用GDI+进行绘图就好了。

protected override void OnPaint(PaintEventArgs e)