none
改变panel大小的问题 RRS feed

  • 问题

  • c#中,初始化一个panel大小为(10,10),绘制一张大小为(20X20)的图片在panel上,屏幕会显示图片10X10的大小,我点击“扩大”按钮,执行panel.Width = 20,panel.Height= 20,repaint图片,发现绘制的区域仍然是10x10的区域,并不是20x20。

    哪位高人能分析下原理,谢谢。

    2010年7月8日 3:46

答案

  • 你好!

         g.DrawImage(img, 0, 0, panel_back.Width, panel_back.Height);//这里把img.Width和img.Height换成放大后的尺寸


    周雪峰
    2010年7月10日 6:12
    版主

全部回复

  • 你有没有调用panel的重绘事件呀!如果你没有执行,那么你即使是设定了他大小,他应该也是不会改变的
    2010年7月8日 4:19
  • 你是怎么重绘的

    你是在PANEL里面放置一个picturebox控件来显示绘制的图片吗?,你可以把picturebox的DOCK属性设为fill


    .net/asp.net开发群118343907
    2010年7月8日 4:56
  • 不是,直接drawimage(....)的。
    2010年7月8日 5:52
  • 的确是重新绘制过,但是绘制的区域还是没有变化。
    2010年7月8日 5:56
  • 如果的确重绘制过了,那么应该就是你画图的时候的大小本来就是10*10了

    楼主建议你贴出所有代码


    I see you~,.NET交流群71840452 微软中文论坛同城社区成都QQ群:74268428http://hi.baidu.com/1987raymondMy Blog~~~
    2010年7月9日 3:37
    版主
  •   private void repaint_mainpanel()
            {
                if(img != null)
                    g.DrawImage(img, 0, 0, img.Width, img.Height);
            }

             /**确定按钮, 改变了panel的大小 ,并且重新绘制*/
            private void change_size_Click(object sender, EventArgs e)
            {
                if (panel_back.Width == 100)
                {
                    panel_back.Width = 200;
                    panel_back.Height = 200;


                }
                else
                {
                    panel_back.Width = 100;
                    panel_back.Height = 100;
                }

                repaint_mainpanel();
                  
            }

          点击按钮改变panel大小,接着重新绘制整张图片。 改变了panel的大小,绘制区域仍然是100x100(初始化的大小)

    2010年7月10日 1:47
  • 你好!

         g.DrawImage(img, 0, 0, panel_back.Width, panel_back.Height);//这里把img.Width和img.Height换成放大后的尺寸


    周雪峰
    2010年7月10日 6:12
    版主