none
winform GDI+的问题 RRS feed

  • 问题

  • 你们好,我的问题是这样的:winform的界面上有一个按钮,当我点击按钮的时候,出现了另外一个界面(注意:这个界面不是项目中存在的,是我动态添加的)

    我在按钮点击事件中写下这样的代码:

    {

    Form form=new Form();

    form.ShowDialog();

    //这里,我要在form这个界面上用GDI+绘制出一段文字,请问,代码应该怎么写?

    }

    2011年3月18日 5:17

答案

  • 不好意思,各位,我自己已经解决了,现在把代码共享一下:

    按钮的点击事件中写下这样的代码:

    {

    Form form=new Form();

    form.FormBorderStyle = FormBorderStyle.None;
    form.WindowState = FormWindowState.Maximized;//这两行代码是设置弹出窗体的为全屏的,因为项目中要用到,所以,我也就一并写出来了。根据需要,可以删除!

    form.Show();//当然,这里我遇到了一个小的问题,就是,如果我这里是以模式窗口(formShowDialog())显示的话,下面绘制的文本就看不到了。

     Pen p = new Pen(Color.Blue, 30);
     string strMsg = "这里是要绘出的文本!";
     FontFamily family = new FontFamily(System.Drawing.Text.GenericFontFamilies.SansSerif);
     Font font = new Font(family, 20);
     form.CreateGraphics().DrawString(strMsg, font, Brushes.Red, 0, 0);

    }



    请问,当我选择用模式窗口弹出界面的时候,该怎么才能在上面绘制出一段文本信息?
    2011年3月18日 5:30
  • dear

    把绘图的动作加到Paint事件

        private void button1_Click(object sender, EventArgs e)
        {
          Form form = new Form();
          form.Text = "Form2";
          form.Name = "Form2";
          form.Paint += new PaintEventHandler(form_Paint);
          //form.FormBorderStyle = FormBorderStyle.None;
          form.WindowState = FormWindowState.Maximized;
          form.ShowDialog();
        }
    
        void form_Paint(object sender, PaintEventArgs e)
        {
          Form form = (Form)sender;
          Pen p = new Pen(Color.Blue, 30);
          string strMsg = "这里是要绘出的文本!";
          FontFamily family = new FontFamily(System.Drawing.Text.GenericFontFamilies.SansSerif);
          Font font = new Font(family, 20);
          form.CreateGraphics().DrawString(strMsg, font, Brushes.Red, 0, 0);
        }
    


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年3月21日 9:39

全部回复

  • 不好意思,各位,我自己已经解决了,现在把代码共享一下:

    按钮的点击事件中写下这样的代码:

    {

    Form form=new Form();

    form.FormBorderStyle = FormBorderStyle.None;
    form.WindowState = FormWindowState.Maximized;//这两行代码是设置弹出窗体的为全屏的,因为项目中要用到,所以,我也就一并写出来了。根据需要,可以删除!

    form.Show();//当然,这里我遇到了一个小的问题,就是,如果我这里是以模式窗口(formShowDialog())显示的话,下面绘制的文本就看不到了。

     Pen p = new Pen(Color.Blue, 30);
     string strMsg = "这里是要绘出的文本!";
     FontFamily family = new FontFamily(System.Drawing.Text.GenericFontFamilies.SansSerif);
     Font font = new Font(family, 20);
     form.CreateGraphics().DrawString(strMsg, font, Brushes.Red, 0, 0);

    }



    请问,当我选择用模式窗口弹出界面的时候,该怎么才能在上面绘制出一段文本信息?
    2011年3月18日 5:30
  • 在Paint事件中重绘

    2011年3月20日 4:02
  • dear

    把绘图的动作加到Paint事件

        private void button1_Click(object sender, EventArgs e)
        {
          Form form = new Form();
          form.Text = "Form2";
          form.Name = "Form2";
          form.Paint += new PaintEventHandler(form_Paint);
          //form.FormBorderStyle = FormBorderStyle.None;
          form.WindowState = FormWindowState.Maximized;
          form.ShowDialog();
        }
    
        void form_Paint(object sender, PaintEventArgs e)
        {
          Form form = (Form)sender;
          Pen p = new Pen(Color.Blue, 30);
          string strMsg = "这里是要绘出的文本!";
          FontFamily family = new FontFamily(System.Drawing.Text.GenericFontFamilies.SansSerif);
          Font font = new Font(family, 20);
          form.CreateGraphics().DrawString(strMsg, font, Brushes.Red, 0, 0);
        }
    


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年3月21日 9:39