1、用户控件
以ascx作为拓展名,派生自System.Web.UI.UserControl类
以<% @Control %>指令开始
不能直接请求ascx文件,用户控件文件必须宿主到ASP.NET Web页面中
用户控件中没有html、body或form元素
2、使用用户控件
<%@ Register Src="~/Registration.ascx" TagName="Registration" TagPrefix="uc1" %>
TagPrefix:指定与用户控件关联的命名空间
TagName:指定在ASP.NET Web页面中使用的用户控件的名字,可以指定任何字符串
Src:指定用户控件的虚拟路径
VS默认生成的TagPrefix以uc开头,TagName则直接使用用户控件的文件名
3、在web.config中注册用户控件(用户控件不能与宿主控件的Web页面位于同一个文件夹下)
<configuration>
<system.web>
<pages>
<controls>
<add tagPrefix="myUserControl" tagName="registration" src="~/UserControl/Registration.ascx" />
</controls>
</pages>
</system.web>
</configuration>
使用时:用如下代码声明用户控件
<myUserControl:registration ID="regcontrol" runat="server" />
4、动态加载用户控件
实现步骤:
在Page.Load事件中加载用户控件,以便于用户控件能够恢复状态且postback事件
使用容器控件和PlaceHolder控件来宿主用户控件,使用户控件能够显示在正确的位置
当需要调用Page.FindControl方法查找用户控件时,可以为用户控件指定一个ID值属性以便于获取对用户控件的调用
加载用户控件的方法是Page.LoadControl
5、调用自定义属性和事件,需要对用户控件进行类型转换
转换之前,在页面声明区使用<%@Reference %>语法来引用用户控件
6、动态绘图(GDI+绘图)
基本步骤
1、在内存中创建一个Bitmap位图对象,所有的绘图将在该位图上操作
2、为上一步创建的Bitmap对象创建一个Graphics上下文对象,以便于使用System.Drawing.Graphics的属性和方法
3、使用Graphics对象的方法来完成绘图,可以绘制图形、填充图像或者是从一个已经存在的文件中复制图像
4、调用Response.OutputStream将图像数据以二进制格式写入浏览器
7、基本绘图
System.Drawing:该命名空间中定义了许多基本绘图元素,包括Pens、Brushes和Bitmaps
System.Drawing2D:该命名空间提供高级的二维和矢量图形功能,比如GraphicsPath类
System.Drawing.Imageing:命名空间提供高级GDI+图形处理功能,包括ImageFormat类
System.Drawing.Text:该命名空间提供了高级的GDI+排版功能,比如文字排列方式
8、无缩放的图像绘制
9、输出PNG格式图像时,要先将PNG格式的图片保存到MemoryStream(可来回定位的流)流中
Response.ContentType = "image/png";
MemoryStream msm = new MemoryStream();
thumbnailImage.Save(msm, System.Drawing.Imaging.ImageFormat.Png);
msm.WriteTo(Response.OutputStream);
thumbnailImage.Dispose();
msm.Dispose();
10、速度和质量之间的优化
Graphics对象有一个SmoothingMode的枚举属性