}
由于使用Image类,必须引用System.Drawing命名空间,使用PaintEventArgs事件类型必须引用System.Windows.Forms命名空间,使用WebClient类必须引用System.Net命名空间,使用Stream类必须引用System.IO命名空间。完成Weather类以后,要在主程序中声明并实例化,再调用实例的GetUrl函数,使要显示的天气信息的各个变量得到赋值。这儿就要考虑到访问网页出错的情况,使用的方式是用try /catch,在访问网页出错时调用GetLocal显示默认的图片,这样也避免了显示天气时,记录天气信息的变量并未被赋值,从而导致程序错误。最后在主程序的绘图函数中调用Weather类的绘图函数将天气信息显示出来。详细的操作步骤如下:
(1)在ScreenSaverForm(ScreenSaverForm.cs文件)类中先声明一个Weather类,取名为scrWeather,同时要定义两个函数LoadWeather()和InitializeWeather(),分别实现加载天气信息和初始化Weather类的绘图信息,代码如下:
//加载天气信息,如访问页面失败,调用默认的图片
private void LoadWeather()
{
try
{
scrWeather.GetUrl();
}
catch
{
scrWeather.GetLocal();
}
}
//初始化天气的绘制信息
private void InitializeWeather ()
{
//开始绘制天气预报的点在屏幕的3/4宽,1/12高处
scrWeather.WPoint = new Point( 3 * Width / 4, Height / 12 );
scrWeather.Font = new Font("宋体", 12, GraphicsUnit.Pixel);
}
(2)在ScreenSaverForm类的构造函数中,构造scrWeather实例,并依次调用LoadWeather()和InitializeWeather()函数;
(3)在ScreenSaverForm类的绘制函数中加入scrWeather实例的绘制函数;
到此在屏幕上实现了显示天气预报。
三 多个RSS源访问
前面介绍的建立的天气类实用的功能虽然多一点,但是还是相对比较独立的,Weather类完成了所有功能,只需主程序调用就可以了,而加入多个RSS源的功能就需要了解原程序的结构。要做的是为程序添加一些键盘响应事件,使用左右键可以在不同RSS源之间切换,使用回车键可以打开系统默认的浏览器访问选择的RSS项,同时在程序的设置部分添加管理RSS源的功能。
|