ASP.NET网站制作之C# winform 传神的仿Vista效果的按钮控...
它有很多缺点的,有兴趣可以到网上去搜索一下。于是微软有发明了“下一代”C++:C++/CLI语言,这个可以解决在.NETFramework中,托管C++产生的问题。在《程序员》杂志上,lippman和李建中合作连载介绍了C++/CLI语言。usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Drawing;usingSystem.Drawing.Imaging;usingSystem.Drawing.Drawing2D;usingSystem.Data;usingSystem.Text;usingSystem.Windows.Forms;namespaceMyControls{publicpartialclassCrystalButton:Button{privateenumMouseActionType{None,Hover,Click}privateMouseActionTypemouseAction;privateImageAttributesimgAttr=newImageAttributes();privateBitmapbuttonBitmap;privateRectanglebuttonBitmapRectangle;publicCrystalButton(){InitializeComponent();mouseAction=MouseActionType.None;this.SetStyle(ControlStyles.AllPaintingInWmPaintControlStyles.DoubleBufferControlStyles.UserPaint,true);//Thefollowingdefaultsarebettersuitedtodrawthetextoutlinethis.Font=newFont("ArialBlack",12,FontStyle.Bold);this.BackColor=Color.DarkTurquoise;this.Size=newSize(112,48);}privateGraphicsPathGetGraphicsPath(Rectanglerc,intr){intx=rc.X,y=rc.Y,w=rc.Width,h=rc.Height;GraphicsPathpath=newGraphicsPath();path.AddArc(x,y,r,r,180,90);//Upperleftcornerpath.AddArc(x+w-r,y,r,r,270,90);//Upperrightcornerpath.AddArc(x+w-r,y+h-r,r,r,0,90);//Lowerrightcornerpath.AddArc(x,y+h-r,r,r,90,90);//Lowerleftcornerpath.CloseFigure();returnpath;}protectedoverridevoidOnPaint(PaintEventArgse){Graphicsg=e.Graphics;//g.Clear(Color.White);g.Clear(SystemColors.ButtonFace);Colorclr=this.BackColor;intshadowOffset=8;intbtnOffset=0;switch(mouseAction){caseMouseActionType.Click:shadowOffset=4;clr=Color.LightGray;btnOffset=2;break;caseMouseActionType.Hover:clr=Color.LightGray;break;}g.SmoothingMode=SmoothingMode.AntiAlias;//////创立按钮自己的图形///Rectanglerc=newRectangle(btnOffset,btnOffset,this.ClientSize.Width-8-btnOffset,this.ClientSize.Height-8-btnOffset);GraphicsPathpath1=this.GetGraphicsPath(rc,20);LinearGradientBrushbr1=newLinearGradientBrush(newPoint(0,0),newPoint(0,rc.Height+6),clr,Color.White);//////创立按钮暗影///Rectanglerc2=rc;rc2.Offset(shadowOffset,shadowOffset);GraphicsPathpath2=this.GetGraphicsPath(rc2,20);PathGradientBrushbr2=newPathGradientBrush(path2);br2.CenterColor=Color.Black;br2.SurroundColors=newColor[]{SystemColors.ButtonFace};//为了更传神,我们将突变停止色彩设定为窗体远景色彩,能够依据窗口的远景色彩得当调剂//////创立按钮顶部红色突变///Rectanglerc3=rc;rc3.Inflate(-5,-5);rc3.Height=15;GraphicsPathpath3=GetGraphicsPath(rc3,20);LinearGradientBrushbr3=newLinearGradientBrush(rc3,Color.FromArgb(255,Color.White),Color.FromArgb(0,Color.White),LinearGradientMode.Vertical);//////绘制图形///g.FillPath(br2,path2);//绘制暗影g.FillPath(br1,path1);//绘制按钮g.FillPath(br3,path3);//绘制顶部红色泡泡//////设定内存位图工具,举行二级缓存画图操纵///buttonBitmapRectangle=newRectangle(rc.Location,rc.Size);buttonBitmap=newBitmap(buttonBitmapRectangle.Width,buttonBitmapRectangle.Height);Graphicsg_bmp=Graphics.FromImage(buttonBitmap);g_bmp.SmoothingMode=SmoothingMode.AntiAlias;g_bmp.FillPath(br1,path1);g_bmp.FillPath(br3,path3);//////将region赋值给buttonRegionrgn=newRegion(path1);rgn.Union(path2);this.Region=rgn;//////绘制按钮的文本///GraphicsPathpath4=newGraphicsPath();RectangleFpath1bounds=path1.GetBounds();RectanglercText=newRectangle((int)path1bounds.X+btnOffset,(int)path1bounds.Y+btnOffset,(int)path1bounds.Width,(int)path1bounds.Height);StringFormatstrformat=newStringFormat();strformat.Alignment=StringAlignment.Center;strformat.LineAlignment=StringAlignment.Center;path4.AddString(this.Text,this.Font.FontFamily,(int)this.Font.Style,this.Font.Size,rcText,strformat);PentxtPen=newPen(this.ForeColor,1);g.DrawPath(txtPen,path4);g_bmp.DrawPath(txtPen,path4);}protectedoverridevoidOnMouseDown(MouseEventArgse){if(e.Button==MouseButtons.Left){this.mouseAction=MouseActionType.Click;this.Invalidate();}base.OnMouseDown(e);}protectedoverridevoidOnMouseUp(MouseEventArgse){this.mouseAction=MouseActionType.Hover;this.Invalidate();base.OnMouseUp(e);}protectedoverridevoidOnMouseHover(EventArgse){this.mouseAction=MouseActionType.Hover;this.Invalidate();base.OnMouseHover(e);}protectedoverridevoidOnMouseEnter(EventArgse){this.mouseAction=MouseActionType.Hover;this.Invalidate();base.OnMouseEnter(e);}protectedoverridevoidOnMouseLeave(EventArgse){this.mouseAction=MouseActionType.None;this.Invalidate();base.OnMouseLeave(e);}}}完全不一样的。.net其实我也说不太清,.net可以把他理解为跟J2EE相对的工具。c++主要做系统相关的开发你要学.net的话就应该学C#。(其实微软在.NET平台上也考虑了给C++留一个地位。 ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。 由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。 ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。 ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。 可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。 在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的 碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。 Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
页:
[1]