想问下各位大牛GDI+重要不????希望指点下!有什么好的方法,不吝赐教饿!前几天在前程无忧狂投简历,有幸收到一份笔试通知,这是我的第一次笔试,心里还蛮激动的。来到公司后负责人给我一份试卷说是1个小时完成。我看了看题前面填空还可以,大题都是改错题,4道66分,我想这要是做好了,就够了!一看四道有三道都有关Graphics 的,心想这下完了,这东西平常压根就没用过啊!有什么错当然找不到啊,只怪自己平常不留心,这东西真的有这么重要吗?还有一道我一看就出来了,考得是结构里面不能显示声明无参的构造函数这个要点。其他的就靠自己“冥思苦想了”。最终硬着头皮做完了。让我回去等通知。我知道是没戏喽,我的第一次啊!哎,回去一定要学习一下GDI+。今天我终于稍微了解了下,感觉还蛮有意思的。

刚开始我建了个Windows程序,程序就在form构造函数中写着。


            Graphics gs 
= this.CreateGraphics();
            Show();
            Pen blue 
= new Pen(Color.Blue,1);
            gs.DrawEllipse(blue,
0,0,50,100);

可是我当我最小化后再打开时窗体上的椭圆竟然消失了,我好生纳闷,查了资料,原来是这样的:如果窗口的一部分被隐藏了,Windows通常就会立即删除与其中相关的所有信息,要不然存储屏幕数据的能存量就是个天文数字。也就是说Windows释放了保存这些数据的能存。应该要使用OnPaint()绘制图形。写了下面的代码:

 

Code

了解了原理才发现这样写也有一定的缺陷。使用Paint事件是通知应用程序完成重新绘制的要求,并且重新绘制了窗口的所有能容,这是很不高效的。只要绘制我们需要的内容就好了,所以我们要控制下

 

Code

这样就算差不多了。

 

还有个问题,就是当我做得图形较大是,运行出来显示的结果不全,也就是说窗口小了,要做个滚动条这样就好看些,不过根据以前学习注册表的经历,可以设置当窗口改变下,将其数据保存下,下次再运行时,窗口的大小就是你改变的那个大小,不过这里就不需要了,有更简单的方法!下面是我写得代码:

 

 

Code

 

 

在InitializeComponent()中设置:

this.AutoScrollMinSize = new System.Drawing.Size(250, 350);就好了,这样简单的设计就完成了。第一次接触这东西感觉还蛮好玩的!学GDI+的道路漫长啊! 明天继续啊!