|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
有时也搞不懂应该学那种;主要看你以后去的那个公司是使用哪种了。就像王千祥的课上说的:企业应用现在主要就三层(其实也差不多就是MVC):表示层(主要使用html写的,很简单)、业务逻辑层(主要就是应用服务器的)。最后就是数据层(其实就是学习数据库)静态|办理人人都晓得我们假如想把网页上的笔墨做出对照炫的效果,便只能用POTOSHOP、FIREWORK等图象处置软件把笔墨做成图片来完成,由于如许才不会依附扫瞄者的字体、扫瞄器范例等。但是在我们的WEB使用中又常常是静态的笔墨,我们便不克不及用图象处置软件来处置了,只能让WEB程序静态天生,侥幸地是.NetFramework给我们供应了便当,上面我们就使用System.Drawing定名空间下的Bitmap类与Graphics类来编写一个天生笔墨图片的类,利用该类天生图片时能满意以下需求:
1、能够指定笔墨字体、巨细和色彩(注:指定的笔墨在WEB服务器上必要有该字库);
2、能够加笔墨暗影;
3、能够指定笔墨的通明度;
4、能够指定背景图片或背景色彩;
5、能够指定天生的图片巨细(宽度与高度);
6、能够指定笔墨的地位(右边距和上边距);
7、当用户设定的笔墨字号太年夜,能主动调剂笔墨巨细使之能顺应天生图片的巨细。该类完成代码以下:
1usingSystem.Drawing;
2usingSystem.Drawing.Drawing2D;
3usingSystem.Drawing.Imaging;
4
5namespaceYcweb.Controls.Utility
6{
7/**////<summary>
8///WaterMark
9///</summary>
10publicclassWatermark
11{
12privateint_width;
13privateint_height;
14privatestring_fontFamily;
15privateint_fontSize;
16privatebool_adaptable;
17privateFontStyle_fontStyle;
18privatebool_shadow;
19privatestring_backgroundImage;
20privateColor_bgColor;
21privateint_left;
22privatestring_resultImage;
23privatestring_text;
24privateint_top;
25privateint_alpha;
26privateint_red;
27privateint_green;
28privateint_blue;
29privatelong_quality;
30
31
32
33publicWatermark()
34{
35//
36//TODO:Addconstructorlogichere
37//
38_width=460;
39_height=30;
40_fontFamily="汉文行楷";
41_fontSize=20;
42_fontStyle=FontStyle.Regular;
43_adaptable=true;
44_shadow=false;
45_left=0;
46_top=0;
47_alpha=255;
48_red=0;
49_green=0;
50_blue=0;
51_backgroundImage="";
52_quality=100;
53_bgColor=Color.FromArgb(255,229,229,229);
54
55}
56
57/**////<summary>
58///字体
59///</summary>
60publicstringFontFamily
61{
62set{this._fontFamily=value;}
63}
64
65/**////<summary>
66///笔墨巨细
67///</summary>
68publicintFontSize
69{
70set{this._fontSize=value;}
71}
72
73/**////<summary>
74///笔墨作风
75///</summary>
76publicFontStyleFontStyle
77{
78get{return_fontStyle;}
79set{_fontStyle=value;}
80}
81
82/**////<summary>
83///通明度0-255,255暗示不通明
84///</summary>
85publicintAlpha
86{
87get{return_alpha;}
88set{_alpha=value;}
89}
90
91/**////<summary>
92///水印笔墨是不是利用暗影
93///</summary>
94publicboolShadow
95{
96get{return_shadow;}
97set{_shadow=value;}
98}
99
100publicintRed
101{
102get{return_red;}
103set{_red=value;}
104}
105
106publicintGreen
107{
108get{return_green;}
109set{_green=value;}
110}
111
112publicintBlue
113{
114get{return_blue;}
115set{_blue=value;}
116}
117
118/**////<summary>
119///底图
120///</summary>
121publicstringBackgroundImage
122{
123set{this._backgroundImage=value;}
124}
125
126/**////<summary>
127///水印笔墨的右边距
128///</summary>
129publicintLeft
130{
131set{this._left=value;}
132}
133
134
135/**////<summary>
136///水印笔墨的顶边距
137///</summary>
138publicintTop
139{
140set{this._top=value;}
141}
142
143/**////<summary>
144///天生后的图片
145///</summary>
146publicstringResultImage
147{
148set{this._resultImage=value;}
149}
150
151/**////<summary>
152///水印文本
153///</summary>
154publicstringText
155{
156set{this._text=value;}
157}
158
159
160/**////<summary>
161///天生图片的宽度
162///</summary>
163publicintWidth
164{
165get{return_width;}
166set{_width=value;}
167}
168
169/**////<summary>
170///天生图片的高度
171///</summary>
172publicintHeight
173{
174get{return_height;}
175set{_height=value;}
176}
177
178/**////<summary>
179///若笔墨太年夜,是不是依据背景图来调剂笔墨巨细,默许为顺应
180///</summary>
181publicboolAdaptable
182{
183get{return_adaptable;}
184set{_adaptable=value;}
185}
186
187publicColorBgColor
188{
189get{return_bgColor;}
190set{_bgColor=value;}
191}
192
193/**////<summary>
194///输入图片质量,质量局限0-100,范例为long
195///</summary>
196publiclongQuality
197{
198get{return_quality;}
199set{_quality=value;}
200}
201
202/**////<summary>
203///当即天生水印最终效果
204///</summary>
205///<returns>天生乐成前往true,不然前往false</returns>
206publicboolCreate()
207{
208try
209{
210Bitmapbitmap;
211Graphicsg;
212
213//利用纯背景致
214if(this._backgroundImage.Trim()=="")
215{
216bitmap=newBitmap(this._width,this._height,PixelFormat.Format64bppArgb);
217g=Graphics.FromImage(bitmap);
218g.Clear(this._bgColor);
219}
220else
221{
222bitmap=newBitmap(Image.FromFile(this._backgroundImage));
223g=Graphics.FromImage(bitmap);
224}
225g.SmoothingMode=SmoothingMode.HighQuality;
226g.InterpolationMode=InterpolationMode.HighQualityBicubic;
227g.CompositingQuality=CompositingQuality.HighQuality;
228
229Fontf=newFont(_fontFamily,_fontSize,_fontStyle);
230SizeFsize=g.MeasureString(_text,f);
231
232//调剂笔墨巨细直到能顺应图片尺寸
233while(_adaptable==true&&size.Width>bitmap.Width)
234{
235_fontSize--;
236f=newFont(_fontFamily,_fontSize,_fontStyle);
237size=g.MeasureString(_text,f);
238}
239
240Brushb=newSolidBrush(Color.FromArgb(_alpha,_red,_green,_blue));
241StringFormatStrFormat=newStringFormat();
242StrFormat.Alignment=StringAlignment.Near;
243
244if(this._shadow)
245{
246Brushb2=newSolidBrush(Color.FromArgb(90,0,0,0));
247g.DrawString(_text,f,b2,_left+2,_top+1);
248}
249g.DrawString(_text,f,b,newPointF(_left,_top),StrFormat);
250
251bitmap.Save(this._resultImage,ImageFormat.Jpeg);
252bitmap.Dispose();
253g.Dispose();
254returntrue;
255}
256catch
257{
258returnfalse;
259}
260}
261}
262
263
264}
挪用则相称复杂,在此不予赘述,特把我利用的效果抓个图,以供人人参考
对于new隐藏成员的作用,往往是出于使用了一个第三方类库,而你又无法获得这个类库的源代码,当你继承这个类库的某个类时,你需要重新实现其中的一个方法,而又需要与父类中的函数使用同样的函数,这是就需要在自定义的子类中把那个同名函数(或成员)加上new标记,从而隐藏父类中同名的成员。 |
|