当前位置:编程学习 > C#/ASP.NET >>

关于在控件上绘字不显问题请教

            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事件中。 --------------------编程问答--------------------
引用 1 楼 u011303459 的回复:
把画数字的代码移到PictureBox的paint事件中。


PictureBox是动态创建的,好似像做paint事件用不了,提示参数错误,麻烦写个正确示例,3Q --------------------编程问答-------------------- PictureBox的话可以先在image上做绘图操作再把图片赋给PictureBox的Image属性,就不要在paint那里搞了 --------------------编程问答--------------------
引用 2 楼 zhlym 的回复:
Quote: 引用 1 楼 u011303459 的回复:

把画数字的代码移到PictureBox的paint事件中。


PictureBox是动态创建的,好似像做paint事件用不了,提示参数错误,麻烦写个正确示例,3Q

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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,