关于在控件上绘字不显问题请教
PictureBox U1 = new PictureBox();U1.BackColor = Color.Transparent;
U1.Name = "UserXZ11";
U1.Image = new Bitmap("图片.png");
U1.Location = new Point(90, 160);
U1.Size = new System.Drawing.Size(48, 24);
this.Controls.Add(U1);
U1.SendToBack();
Random rn = new Random();
int num = rn.Next(1000, 9000);
Graphics g = U1.CreateGraphics();
string str = num.ToString();
Font font = new Font("Arial", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel, ((byte)(0)));
SizeF size = g.MeasureString(str, font);
g.DrawString(str, font, new SolidBrush(Color.Black), U1.Width - size.Width, 10);
g.Dispose();
以上为调试代码,目的是创建一个PictureBox,并在PictureBox上面绘制一个数字文字,现在遇上的问题如下:
1、发现文字并没有显出来(如果没有PictureBox的话是可以显,但发现一切换程序,原来显示的字不见了)
2、PictureBox会只创建一个,但上面的文字会不断的更改
请大家指点下两个问题如何解决,谢谢
--------------------编程问答-------------------- 把画数字的代码移到PictureBox的paint事件中。 --------------------编程问答--------------------
PictureBox是动态创建的,好似像做paint事件用不了,提示参数错误,麻烦写个正确示例,3Q --------------------编程问答-------------------- PictureBox的话可以先在image上做绘图操作再把图片赋给PictureBox的Image属性,就不要在paint那里搞了 --------------------编程问答--------------------
U1.Paint += new System.Windows.Forms.PaintEventHandler(this.U1_Paint);
private void U1_Paint(object sender, PaintEventArgs e)
{
}
--------------------编程问答-------------------- 再问个,如果切换程序,上面的数字要不要变?因为切换程序后,在切换回来一样会触发paint事件。
如果你不要变,那么3楼的方法更适合。 --------------------编程问答-------------------- 你自己的代码只需要改一句就OK了
Graphics g = U1.CreateGraphics();
改为:
Graphics g = Graphics.FromImage(U1.Image);
补充:.NET技术 , C#