<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
	<title>Thiết kế Web</title>
	<description></description>
	<link>http://www.vietphotoshop.com/forum/index.php</link>
	<pubDate>Mon, 22 Sep 2008 02:10:23 +0000</pubDate>
	<ttl>30</ttl>
	<item>
		<title>Code ASP</title>
		<link>http://www.vietphotoshop.com/forum/index.php?showtopic=19903</link>
		<description><![CDATA[<!--fonto:Arial--><span style="font-family:Arial"><!--/fonto-->Mình có một số đoạn code sau các bạn có thể góp ý cho mình xem tại sao nó không chạy được. Cảm ơn!<br /><br />Code Trang register.asp:<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;html&#62;<br />&#60;head&#62;<br />&#60;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=UTF-8&#34; /&#62;<br />&#60;title&#62;Register&#60;/title&#62;<br />&#60;/head&#62;<br />&#60;body&#62;<br />&#60;form name = &#34;dk&#34; method = &#34;POST&#34; action = &#34;filetest.asp&#34;&#62;<br />&lt!--ID&#58; &#60;input type = &#34;text&#34; name = &#34;txtID&#34;&#62; --&gt;<br />&#60;p&#62;Username&#58; &#60;input type = &#34;text&#34; name = &#34;txtUS&#34; id=&#34;txtUS&#34;&#62;&#60;/p&#62;<br />&#60;p&#62;Password&#58; &#60;input type = &#34;password&#34; name = &#34;txtPW&#34; id=&#34;txtPW&#34;&#62;&#60;/p&#62;<br />&#60;p&#62;Confirm Password&#58; &#60;input type = &#34;password&#34; name = &#34;txtRPW&#34; id=&#34;txtRPW&#34;&#62;&#60;/p&#62; <br />&#60;input name=&#34;dk&#34; id=&#34;dk&#34; type = &#34;submit&#34; value = &#34;submit&#34; onClick=&#34;kiemtra&#40;&#41;&#34;&#62;&nbsp;&nbsp;&nbsp;&#60;input name=&#34;kdk&#34; type = &#34;reset&#34; id=&#34;kdk&#34; value = &#34;Reset&#34;&#62;<br />&#60;p&#62;<br />&#60;/form&#62;<br />&lt;script language=&#34;javascript&#34;&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;function kiemtra&#40;&#41; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&#40;dk.txtUS.value==&#34;&#34;&#41; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert &#40;&#34;Bạn hãy điền đầy đủ thông tin! &#34;&#41;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dk.txtUS.focus&#40;&#41;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br />&nbsp;&nbsp; }<br />&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&#40;dk.txtPW.value==&#34;&#34;&#41; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert &#40;&#34;Bạn hãy điền đầy đủ thông tin! &#34;&#41;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dk.txtPW.focus&#40;&#41;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br />&nbsp;&nbsp; }<br />&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&#40;dk.txtRPW.value==&#34;&#34;&#41; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert &#40;&#34;Bạn hãy điền đầy đủ thông tin! &#34;&#41;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dk.txtRPW.focus&#40;&#41;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br />&nbsp;&nbsp; }<br />&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&#40;dk.txtPW.value!=dk.txtRPW.value&#41; {<br />&nbsp;&nbsp; alert&#40;&#34;Mật khẩu nhập lại khác mật khẩu cũ!&#34;&#41;;<br />&nbsp;&nbsp;&nbsp;&nbsp;dk.txtRPW.focus&#40;&#41;;<br />&nbsp;&nbsp;&nbsp;&nbsp;return false;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp; <br />&nbsp;&nbsp; }<br />&#60;/script&#62;<br />&#60;/body&#62;<br />&#60;/html&#62;<!--c2--></div><!--ec2--><br /><br />Code Trang filetest.asp<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;%<br />Dim CN<br />Dim strConn<br />Set CN = Server.CreateObject&#40;&#34;ADODB.Connection&#34;&#41;<br />strConn= &#34;Provider = Microsoft.Jet.OLEDB.4.0; Data Source = &#34; & _<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Server.MapPath&#40;&#34;database.mdb&#34;&#41; & &#34;;&#34;<br />CN.ConnectionString = strConn<br />CN.Open<br /><br /><br /><br />Dim txtUS<br />Dim txtPW<br /><br /><br />txtUS = Request.Form&#40;&#34;txtUS&#34;&#41;<br />txtPW = Request.Form&#40;&#34;txtPW&#34;&#41;<br /><br />Dim sql<br />Dim adOpenKeyset<br />Dim adLockOptimistic<br />Dim RS<br /><br />sql = &#34;SELECT * FROM USERLIST WHERE USERNAME = '&#34; & txtUS & &#34;'&#34;<br />RS.Open sql,CN,2,3<br /><br /><br />If RS.EOF = False Then<br />&nbsp;&nbsp; Response.Write &#34;Username nay da co.&#60;br&#62;&#34;<br />&nbsp;&nbsp; Response.Write &#34;&#60;a href = 'register.asp'&#62;Click vao day de quay lai&#60;/a&#62;&#34;<br />&nbsp;&nbsp; Response.End<br />Else<br />&nbsp;&nbsp; RS.AddNew<br />&nbsp;&nbsp; RS.Fields&#40;&#34;USERNAME&#34;&#41; = txtUS<br />&nbsp;&nbsp; RS.Fields&#40;&#34;PASSWORD&#34;&#41; = txtPW<br />&nbsp;&nbsp; RS.Update<br />End If<br /><br />Response.Write &#34;&#60;h1&#62;Du lieu da duoc them vao.&#60;/h1&#62;&#34;<br />Response.redirect &#34;css.asp&#34;<br /><br />%&#62;<!--c2--></div><!--ec2--><br /><br /><br /><br />Code Trang login.asp<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;html&#62;<br />&#60;head&#62;<br />&#60;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=UTF-8&#34; /&#62;<br />&#60;title&#62;Login&#60;/title&#62; <br />&#60;/head&#62; <br />&#60;body&#62; <br />&#60;form method=&#34;POST&#34; action=&#34;validate.asp&#34;&#62; <br />&nbsp;&nbsp;&#60;p&#62;&#60;font face=&#34;.VnTimeH&#34;&#62;Nhập Username và Password <br />&nbsp;&nbsp;&#60;p&#62;&#60;font face=&#34;.VnTime&#34; size=&#34;4&#34;&#62;UserName&#60;input type=&#34;text&#34; <br />name=&#34;txtUS&#34; size=&#34;20&#34;&#62;&#60;/font&#62;&#60;/p&#62; <br />&nbsp;&nbsp;&#60;p&#62;&#60;font face=&#34;.VnTime&#34; size=&#34;4&#34;&#62;Password &#60;input type=&#34;password&#34; <br />name=&#34;txtPW&#34; size=&#34;20&#34;&#62;&#60;/font&#62;&#60;/p&#62; <br />&nbsp;&nbsp;&#60;p&#62;&#60;font face=&#34;.VnTime&#34; size=&#34;4&#34;&#62;&#60;input type=&#34;submit&#34; value=&#34;Login&#34; <br />name=&#34;Login&#34;&#62;&#60;input type=&#34;reset&#34; value=&#34;Clear&#34; name=&#34;Clear&#34;&#62;&#60;/font&#62;&#60;/p&#62; <br />&#60;/form&#62; <br />&#60;/body&#62; <br />&#60;/html&#62; <br />&#60;/body&#62;<br />&#60;/html&#62;<!--c2--></div><!--ec2--><br /><br />Code Trang validate.asp<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;% <br />txtUS=request&#40;&#34;txtUS&#34;&#41;<br />txtPW=request&#40;&#34;txtPW&#34;&#41; <br />set conn=Server.CreateObject&#40;&#34;ADODB.Connection&#34;&#41;&nbsp;&nbsp;<br />conn.ConnectionString=&#34;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&#34;&_ <br />server.mappath&#40;&#34;database.mdb&#34;&#41; <br />conn.open <br />dim sql<br />dim rs<br />set rs = Server.CreateObject&#40;&#34;ADODB.recordset&#34;&#41; <br />sql=&#34;SELECT * FROM USERLIST WHERE USERNAME= '&#34; & txtUS & &#34;' and &#34;&_ &#34;PASSWORD= '&#34; & txtPW &&#34;'&#34;<br />rs.Open sql, conn,2,3 <br />if not &#40;rs.eof or rs.bof&#41; then <br />&nbsp;&nbsp;&nbsp;&nbsp; Response.write&nbsp;&nbsp;&#34;Ban khong co quyen duoc truy cap trang web nay&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.end <br /> else <br />&nbsp;&nbsp;&nbsp;&nbsp; Session&#40;&#34;login&#34;&#41;=&#34;ok&#34;<br />&nbsp;&nbsp;Response.redirect &#34;css.asp&#34;<br />end if <br />rs.close <br />set rs=nothing <br />conn.close <br />set conn=nothing %&#62;<!--c2--></div><!--ec2--><br /><br />Code Trang checklogin.asp<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;% <br />if&nbsp;&nbsp;not &#40;session&#40;&#34;login&#34;&#41;=&#34;ok&#34; then <br />&nbsp;&nbsp;&nbsp;&nbsp; response.write &#34;Ban khong co quyen truy cap trang nay&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp; response.redirect &#34;login.asp&#34;<br />end if <br />%&#62;<!--c2--></div><!--ec2--><br /><br />Bảng CSDL mình tạo bằng Access 2003 có tên là database, trong database chỉ có 1 bảng userlist: gồm 2 trường USERNAME và PASSWORD đều để dạng text.<br /><!--fontc--></span><!--/fontc-->]]></description>
		<pubDate>Mon, 22 Sep 2008 02:10:23 +0000</pubDate>
		<guid>http://www.vietphotoshop.com/forum/index.php?showtopic=19903</guid>
	</item>
	<item>
		<title>cho em hỏi skin!</title>
		<link>http://www.vietphotoshop.com/forum/index.php?showtopic=19763</link>
		<description><![CDATA[Ai co skin trang <a href="http://vipsofts.net" target="_blank">http://vipsofts.net</a> cho em xin cái]]></description>
		<pubDate>Sat, 13 Sep 2008 09:01:41 +0000</pubDate>
		<guid>http://www.vietphotoshop.com/forum/index.php?showtopic=19763</guid>
	</item>
	<item>
		<title>Silverlight-công nghệ web tương lai</title>
		<link>http://www.vietphotoshop.com/forum/index.php?showtopic=19631</link>
		<description><![CDATA[Có một số thuộc tính được áp dụng chung cho tất cả các đối tượng Silverlight (UIElement): Canvas, các hình họa, MediaElement và TextBlock.<br /><b>Thuộc tính Opacity</b><br />Thuộc tính Opacity cho phép bạn kiểm soát độ trong suốt của một đối tượng UIElement. Bạn có thể đặt giá trị cho thuộc tính Opacity từ 0 đến 1. Đối tượng càng trong suốt nếu giá trị càng gần về 0, nếu đặt là 0 thì đối tượng sẽ hoàn toàn trong suốt, giá trị mặc nhiên của thuộc tính này là 1.0.<br /><br />Ví dụ sau đây sẽ tạo 2 hình họa với các thuộc tính Opacity khác nhau:<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;Canvas Width=&#34;300&#34; Height=&#34;300&#34;<br />&nbsp;&nbsp; xmlns=&#34;http&#58;//schemas.microsoft.com/client/2007&#34;<br />&nbsp;&nbsp; xmlns&#58;x=&#34;http&#58;//schemas.microsoft.com/winfx/2006/xaml&#34;&#62;<br />&nbsp;&nbsp; <br />&nbsp;&nbsp;&#60;Rectangle Opacity=&#34;1.0&#34; Height=&#34;100&#34; Width=&#34;100&#34; Canvas.Left=&#34;30&#34; Canvas.Top=&#34;30&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp; Stroke=&#34;Black&#34; StrokeThickness=&#34;10&#34; Fill=&#34;SlateBlue&#34;/&#62;<br />&nbsp;&nbsp;&#60;Rectangle Opacity=&#34;0.6&#34; Height=&#34;100&#34; Width=&#34;100&#34; Canvas.Left=&#34;70&#34; Canvas.Top=&#34;70&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp; Stroke=&#34;Black&#34; StrokeThickness=&#34;10&#34; Fill=&#34;SlateBlue&#34; /&#62;<br />&#60;/Canvas&#62;<!--c2--></div><!--ec2--><br /><br /><img src="http://files.myopera.com/namdh/blog/silverlight_part5_1.png" border="0" class="linked-image" /><br /><br /><b>Thuộc tính OpacityMask</b><br />Thuộc tính OpacityMask cho phép bạn kiểm soát độ trong suốt trong các phần khác nhau của một đối tượng UIElement. Lấy ví dụ, bạn có thể dùng OpacityMask để làm đối tượng mờ dần từ phải sang trái. Thuộc tính OpacityMask nhận vào một đối tượng Brush. Bút vẽ được áp dụng vào đối tượng và kênh alpha (kênh xác định độ trong suốt) sẽ được dùng để xác định độ trong suốt của pixel tương ứng. Nếu một phần nào đó của bút vẽ là trong suốt thì nó cũng sẽ làm cho thành phần tương ứng trong suốt.<br />Bạn có thể dùng bất kỳ kiểu bút vẽ nào để dùng OpacityMask, tuy nhiên LinearGradientBrush, RadialGradientBrush, và ImageBrush là những kiểu thường dùng nhất.<br />Ví dụ sau sẽ áp dụng một LinearGradientBrush bản đồ trong suốt vào một đối tượng Rectangle.<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;Canvas Width=&#34;300&#34; Height=&#34;300&#34;<br />&nbsp;&nbsp; xmlns=&#34;http&#58;//schemas.microsoft.com/client/2007&#34;<br />&nbsp;&nbsp; xmlns&#58;x=&#34;http&#58;//schemas.microsoft.com/winfx/2006/xaml&#34;&#62;<br />&nbsp;&nbsp;&#60;Rectangle Height=&#34;100&#34; Width=&#34;100&#34; Canvas.Left=&#34;30&#34; Canvas.Top=&#34;30&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp; Stroke=&#34;Black&#34; StrokeThickness=&#34;10&#34; Fill=&#34;SlateBlue&#34;&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;Rectangle.OpacityMask&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;LinearGradientBrush&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;GradientStop Offset=&#34;0.25&#34; Color=&#34;#00000000&#34;/&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;GradientStop Offset=&#34;1&#34; Color=&#34;#FF000000&#34;/&#62;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;/LinearGradientBrush&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;/Rectangle.OpacityMask&#62;<br />&nbsp;&nbsp;&#60;/Rectangle&#62;<br />&#60;/Canvas&#62;<!--c2--></div><!--ec2--><br /><br /><img src="http://files.myopera.com/namdh/blog/silverlight_part5_2.png" border="0" class="linked-image" /><br /><br /><b>Thuộc tính Clip</b><br />Thuộc tính Clip cho phép bạn vẽ các phần của một đối tượng một cách chọn lọc. Để dùng thuộc tính Clip, bạn phải cung cấp một đối tượng Geometry (đối tượng hình học) mô tả phần bạn muốn vẽ. Tất cả những phần nằm bên ngoài hình này đều sẽ bị ẩn đi, hay được gọi là “bị xén”.<br /><br />Ví dụ sau đây dùng một RectangleGeometry để mô tả vùng xén cho một đối tượng Ellipse. Kết quả là, chỉ có phần nào bên trong vùng được định nghĩa bởi RectangleGeometry được hiển thị, những phần còn lại sẽ bị xén.<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;Canvas Width=&#34;300&#34; Height=&#34;300&#34;<br />&nbsp;&nbsp; xmlns=&#34;http&#58;//schemas.microsoft.com/client/2007&#34;<br />&nbsp;&nbsp; xmlns&#58;x=&#34;http&#58;//schemas.microsoft.com/winfx/2006/xaml&#34;&#62;<br />&nbsp;&nbsp; <br />&nbsp;&nbsp;&#60;Ellipse Height=&#34;200&#34; Width=&#34;200&#34; Canvas.Left=&#34;30&#34; Canvas.Top=&#34;30&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp; Stroke=&#34;Black&#34; StrokeThickness=&#34;10&#34; Fill=&#34;SlateBlue&#34;&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;Ellipse.Clip&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;RectangleGeometry Rect=&#34;0, 0, 100, 100&#34;/&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;/Ellipse.Clip&#62;<br />&nbsp;&nbsp;&#60;/Ellipse&#62;<br />&#60;/Canvas&#62;<!--c2--></div><!--ec2--><br /><img src="http://files.myopera.com/namdh/blog/silverlight_part5_3.png" border="0" class="linked-image" /><br /><br /><b>Thuộc tính RenderTransform</b><br />Thuộc tính RenderTransform cho phép bạn dùng đối tượng Transform để quay (rotate), làm xiên (skew), đổi tỷ lệ (scale) hoặc dịch chuyển (translate) một đối tượng. Danh sách sau sẽ mô tả các đối tượng Transform khác nhau mà bạn có thể dùng với thuộc tính RenderTransform.<br />- RotateTransform: Quay một đối tượng theo một góc nào đó.<br />- SkewTransform: Làm xiên đối tượng bởi một khoảng theo chiều X hoặc chiều Y.<br />- ScaleTransform: Phóng to hoặc thu nhỏ một đối tượng theo chiều cao hoặc chiều rộng bởi một khoảng cho trước.<br />- TranslateTransform: Dịch chuyển đối tượng theo chiều dọc hoặc chiều ngang bởi một khoảng cho trước.<br />Ngoài ra còn có một kiểu biến hình đặc biệt, TransformGroup, bạn có thể dùng để áp dụng nhiều phép biến hình lên một đối tượng nào đó. Chẳng hạn bạn có thể quay rồi sau đó làm xiên một đối tượng.<br />Ví dụ sau đây biểu diễn các đối tượng Transform khác nhau bằng cách áp dụng chúng lên các đối tượng Rectangle khác nhau.<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;Canvas Width=&#34;300&#34; Height=&#34;300&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlns=&#34;http&#58;//schemas.microsoft.com/client/2007&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlns&#58;x=&#34;http&#58;//schemas.microsoft.com/winfx/2006/xaml&#34;<br />&nbsp;&nbsp;&#62;<br />&nbsp;&nbsp;&#60;Rectangle Height=&#34;100&#34; Width=&#34;100&#34; Canvas.Left=&#34;70&#34; Canvas.Top=&#34;10&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fill=&#34;Black&#34;&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;Rectangle.RenderTransform&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;RotateTransform Angle=&#34;45&#34;/&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;/Rectangle.RenderTransform&#62;<br />&nbsp;&nbsp;&#60;/Rectangle&#62;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&#60;Rectangle Height=&#34;100&#34; Width=&#34;100&#34; Canvas.Left=&#34;130&#34; Canvas.Top=&#34;10&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fill=&#34;red&#34;&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;Rectangle.RenderTransform&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;SkewTransform AngleX=&#34;30&#34;/&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;/Rectangle.RenderTransform&#62;<br />&nbsp;&nbsp;&#60;/Rectangle&#62;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&#60;Rectangle Height=&#34;100&#34; Width=&#34;100&#34; Canvas.Left=&#34;10&#34; Canvas.Top=&#34;190&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fill=&#34;blue&#34;&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;Rectangle.RenderTransform&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;ScaleTransform ScaleX=&#34;1.3&#34; ScaleY=&#34;.5&#34;/&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;/Rectangle.RenderTransform&#62;<br />&nbsp;&nbsp;&#60;/Rectangle&#62;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&#60;Rectangle Height=&#34;100&#34; Width=&#34;100&#34; Canvas.Left=&#34;160&#34; Canvas.Top=&#34;130&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fill=&#34;Green&#34;&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;Rectangle.RenderTransform&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;TransformGroup&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;RotateTransform Angle=&#34;45&#34;/&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;ScaleTransform ScaleX=&#34;.5&#34; ScaleY=&#34;1.2&#34;/&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;SkewTransform AngleX=&#34;30&#34;/&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;/TransformGroup&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;/Rectangle.RenderTransform&#62;<br />&nbsp;&nbsp;&#60;/Rectangle&#62;<br /> <br />&#60;/Canvas&#62;<!--c2--></div><!--ec2--><br /><img src="http://files.myopera.com/namdh/blog/silverlight_part5_4.png" border="0" class="linked-image" />]]></description>
		<pubDate>Fri, 05 Sep 2008 04:36:23 +0000</pubDate>
		<guid>http://www.vietphotoshop.com/forum/index.php?showtopic=19631</guid>
	</item>
	<item>
		<title>Silverlight- công nghệ web tương lai</title>
		<link>http://www.vietphotoshop.com/forum/index.php?showtopic=19613</link>
		<description><![CDATA[Silverlight hỗ trợ đồ họa cơ bản cho phép bạn có thể vẽ được hình ellipse, chữ nhật, đường thẳng, đa giác và các đường cong... Các thành phần này được gọi chung là các hình họa (shape).<br /><b>Các hình họa cơ bản</b><br />Silverlight cung cấp ba thành phần hình họa cơ bản: hình ellipse, chữ nhật và đường thẳng.<br /><br />Đối tượng ellipse mô tả một hình ellipse hay hình tròn. Bạn có thể kiểm soát chiều rộng và chiều cao bằng cách đặt thuộc tính Width và Height.<br />Đối tượng Rectangle mô tả một hình vuông hoặc một hình chữ nhật, có thể bo tròn góc. Bạn kiểm soát chiều rộng và chiều cao bằng cách đặt giá trị các thuộc tính Width hoặc Height. Bạn cũng có thể dùng thuộc tính RadiusX và RadiusY để xác định độ cong của góc.<br />Thay vì dùng các thuộc tính Width và Height, bạn kiểm soát kích thước và vị trí của một đường thẳng bằng cách đặt giá trị cho các thuộc tính X1, Y1, X2, Y2 của nó.<br /><br />Ví dụ sau vẽ một Ellipse, một Rectangle, và một Line trong một Canvas.<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;Canvas<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlns=&#34;http&#58;//schemas.microsoft.com/client/2007&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlns&#58;x=&#34;http&#58;//schemas.microsoft.com/winfx/2006/xaml&#34;&#62;<br />&nbsp;&nbsp;&#60;Ellipse Height=&#34;200&#34; Width=&#34;200&#34; Canvas.Left=&#34;30&#34; Canvas.Top=&#34;30&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stroke=&#34;Black&#34; StrokeThickness=&#34;10&#34; Fill=&#34;SlateBlue&#34;/&#62;<br />&nbsp;&nbsp;&#60;Rectangle Height=&#34;100&#34; Width=&#34;100&#34; Canvas.Left=&#34;5&#34; Canvas.Top=&#34;5&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stroke=&#34;Black&#34; StrokeThickness=&#34;10&#34; Fill=&#34;SlateBlue&#34;/&#62;<br />&nbsp;&nbsp;&#60;Line X1=&#34;280&#34; Y1=&#34;10&#34; X2=&#34;10&#34; Y2=&#34;280&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stroke=&#34;black&#34; StrokeThickness=&#34;5&#34;/&#62;<br />&#60;/Canvas&#62;<!--c2--></div><!--ec2--><br /><img src="http://files.myopera.com/namdh/blog/silverlight_part4_1.png" border="0" class="linked-image" /><br /><br /><b>Các đối tượng hình họa khác</b><br />Ngoài các đối tượng Ellipse, Line, và Rectangle, Silverlght còn cung cấp 3 đối tượng hình họa khác: Polygon, Polyline, và Path. Một Polygon (đa giác) là một hình đóng với một số cạnh, trong khi một PolyLine là một chuỗi các đoạn thẳng nối với nhau, các đoạn thẳng này có thể tạo thành một hình đóng (đa giác) hoặc không. Ví dụ sau sẽ tạo nên một Polygon và một PolyLine:<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;Canvas<br />&nbsp;&nbsp; xmlns=&#34;http&#58;//schemas.microsoft.com/client/2007&#34;<br />&nbsp;&nbsp; xmlns&#58;x=&#34;http&#58;//schemas.microsoft.com/winfx/2006/xaml&#34;&#62;<br />&nbsp;&nbsp;&#60;Polyline Points=&#34;150, 150 150, 250 250, 250 250, 150&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stroke=&#34;Black&#34; StrokeThickness=&#34;10&#34;/&#62;<br />&nbsp;&nbsp;&#60;Polygon Points=&#34;10,10 10,110 110,110 110,10&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stroke=&#34;Black&#34; StrokeThickness=&#34;10&#34; Fill=&#34;LightBlue&#34;/&#62;<br />&#60;/Canvas&#62;<!--c2--></div><!--ec2--><br /><br /><img src="http://files.myopera.com/namdh/blog/silverlight_part4_2.png" border="0" class="linked-image" /><br /><br />Đối tượng Path có thể được dùng để biểu diễn một hình dạng phức tạp bao gồm cả cung và đường cong. Để dùng Path, bạn phải dùng một kiểu cú pháp đặc biệt để đặt thuộc tính Data của nó. Ví dụ sau sẽ tạo nên ba đối tượng Path.<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;Canvas<br />&nbsp;&nbsp; xmlns=&#34;http&#58;//schemas.microsoft.com/client/2007&#34;<br />&nbsp;&nbsp; xmlns&#58;x=&#34;http&#58;//schemas.microsoft.com/winfx/2006/xaml&#34;&#62;<br />&nbsp;&nbsp;&#60;Path Data=&#34;M0,0 L11.5,0 11.5,30 5.75,40 0,30z&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stroke=&#34;Black&#34; Fill=&#34;SlateBlue&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Canvas.Left=&#34;10&#34; Canvas.Top=&#34;10&#34; /&#62;<br /><br />&nbsp;&nbsp;&#60;Path Data=&#34;M 10,100 C 10,300 300,-200 250,100z&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stroke=&#34;Red&#34; Fill=&#34;Orange&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Canvas.Left=&#34;10&#34; Canvas.Top=&#34;10&#34; /&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&#60;Path Data=&#34;M 0,200 L100,200 50,50z&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stroke=&#34;Black&#34; Fill=&#34;Gray&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Canvas.Left=&#34;150&#34; Canvas.Top=&#34;70&#34; /&#62;<br /><br />&nbsp;&nbsp;&#60;/Canvas&#62;<!--c2--></div><!--ec2--><br /><br /><img src="http://files.myopera.com/namdh/blog/silverlight_part4_3.png" border="0" class="linked-image" /><br />Để có thêm thông tin về cú pháp của Path, hãy xem phần Path Markup Syntax trong bộ Silverlight SDK.<br /><br /><b>Vẽ hình bằng cách sử dụng bút vẽ</b><br />Hầu hết các hình họa đều bao gồm hai phần, đường viền và nền bên trong được kiểm soát bởi các thuộc tính Stroke và Fill. Hình minh họa sau cho bạn thấy phần đường viền và nền của hình chữ nhật ở ví dụ đầu tiên.<br /><img src="http://files.myopera.com/namdh/blog/silverlight_part4_4.png" border="0" class="linked-image" /><br /><br />Không phải mọi hình đều có đầy đủ nền và viền: một Line (đoạn thẳng) chỉ có đường viền. Đặt giá trí thuộc tính Fill của một Line sẽ không có tác dụng.<br />Bạn đặt giá trị cho Stroke và Fill bằng cách sử dụng Brush (bút vẽ). Có 5 kiểu đối tượng bút vẽ mà bạn có thể dùng:<br /><br />- SolidColorBrush<br />- nearGradientBrush<br />- RadialGradientBrush<br />- ImageBrush<br />- VideoBrush (mô tả trong phần media)<br /><br /><b>Vẽ dùng một màu với SolidColorBrush</b><br />Để vẽ một vùng với một màu nào đó, bạn dùng SolidColorBrush. XAML cung cấp một số cách để tạo SolidColorBrush.<br />Bạn có thể dùng một số cú pháp để chỉ tên của một màu, kiểu như “Black” hay “Gray”.<br />Bạn cũng có thể dùng cú pháp thập lục phân để mô tả các thành phần đỏ, xanh lá cây và xanh nước biển, cùng một thành phần tùy chọn chỉ ra độ trong suốt. Có thể dùng những cách sau:<br />- Ký pháp 6-số: Dạng là #rrggbb, trong đó rr là hai chữ số thập lục phân mô tả thành phần màu đỏ, gg mô tả màu xanh lá cây va bb mô tả màu xanh nước biển. Ví dụ như: #0033FF.<br />- Ký pháp 8-số: Định dạng tương tự ký pháp 6-số, ngoại trừ có thêm 2 ký tự mở rộng mô tả giá trị alpha, chỉ ra độ trong suốt: #aarrggbb. Ví dụ: #990033FF.<br />Ngoài ra còn có ký pháp 3 hoặc 4 số cho các màu 8-bit, nhưng ít được sử dụng.<br />Thay vì dùng các thuộc tính như Stroke và Fill để đặt giá trị cho bút vẽ, bạn cũng có thể tạo một đối tượng SolidColorBrush riêng và đặt thuộc tính Color cho nó, dùng một trong những định dạng màu đã nói ở trên.<br /><br />Ví dụ sau đây cho thấy một số cách để vẽ một đối tượng bằng màu đen.<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;Canvas<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlns=&#34;http&#58;//schemas.microsoft.com/client/2007&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlns&#58;x=&#34;http&#58;//schemas.microsoft.com/winfx/2006/xaml&#34;&#62;<br />&nbsp;&nbsp;&#60;Ellipse Height=&#34;90&#34; Width=&#34;90&#34; Canvas.Left=&#34;10&#34; Canvas.Top=&#34;10&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fill=&#34;black&#34;/&#62; &lt!-- SolidColorBrush by color name. --&gt;<br />&nbsp;&nbsp;&#60;Ellipse Height=&#34;90&#34; Width=&#34;90&#34; Canvas.Left=&#34;110&#34; Canvas.Top=&#34;10&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fill=&#34;#000000&#34;/&#62; &lt!-- SolidColorBrush by 6-digit hexadecimal notation. --&gt;<br />&nbsp;&nbsp; &#60;Ellipse Height=&#34;90&#34; Width=&#34;90&#34; Canvas.Left=&#34;10&#34; Canvas.Top=&#34;110&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fill=&#34;#ff000000&#34;/&#62; &lt!-- SolidColorBrush by 8-digit hexadecimal notation. --&gt;<br />&nbsp;&nbsp; &#60;Ellipse Height=&#34;90&#34; Width=&#34;90&#34; Canvas.Left=&#34;110&#34; Canvas.Top=&#34;110&#34;&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;Ellipse.Fill&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt!-- SolidColorBrush by object element syntax. --&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;SolidColorBrush Color=&#34;Black&#34;/&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;/Ellipse.Fill&#62;<br />&nbsp;&nbsp;&#60;/Ellipse&#62;<br />&#60;/Canvas&#62;<!--c2--></div><!--ec2--><br /><br /><img src="http://files.myopera.com/namdh/blog/silverlight_part4_5.png" border="0" class="linked-image" /><br /><br /><b>Vẽ hình với gradient dùng LinearGradientBrush và RadialGradientBrush</b><br /><br />Silverlight hỗ trợ cả linear và radial gradiant. Gradient có một hoặc nhiều gradient stop mô tả sự chuyển đổi và vị trí của các màu sắc khác nhau trong gradient.<br />Hầu hết các gradient chỉ cần hai gradient stop, nhưng bạn có thể tạo nhiều hơn nếu muốn.<br />- LinearGradientBrush vẽ một gradient theo một đường thẳng. Đường thẳng này mặc nhiên sẽ nằm theo đường chéo từ góc trên trái xuống góc dưới phải. Bạn có thể đặt lại giá trị cho thuộc tính StartPoint và EndPoint để thay đổi vị trí của đoạn thẳng này.<br />- RadialGradientBrush vẽ một gradient dọc theo một đường tròn, mặc nhiên tâm hình tròn này sẽ nằm ở giữa vùng được vẽ. Bạn có thể thay đổi hình thức của gradient bằng cách đặt lại giá trị các thuộc tính GradientOrigin, Center, RadiusX, and RadiusY.<br />Để thêm gradient stop vào bút vẽ, bạn hãy tạo các đối tượng GradientStop. Đặt lại thuộc tính Offset của một GradientStop thành một giá trị từ 0 đến 1 để đặt lại vị trí tương đối của nó trong gradient. Đặt thuộc tính Color của GradientStop thành một giá trị màu, có thể dùng tên hoặc dùng cú pháp thập lục phân.<br /><br />Ví dụ sau dùng các đối tượng LinearGradientBrush và RadialGradientBrush để vẽ 4 đối tượng Rectangle.<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;Canvas<br />&nbsp;&nbsp; xmlns=&#34;http&#58;//schemas.microsoft.com/client/2007&#34;<br />&nbsp;&nbsp; xmlns&#58;x=&#34;http&#58;//schemas.microsoft.com/winfx/2006/xaml&#34;&#62;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&lt!-- Linear gradients --&gt;<br />&nbsp;&nbsp;&#60;Rectangle Width=&#34;140&#34; Height=&#34;70&#34; Canvas.Left=&#34;10&#34; Canvas.Top=&#34;10&#34;&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;Rectangle.Fill&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;LinearGradientBrush&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;GradientStop Color=&#34;Yellow&#34; Offset=&#34;0.0&#34; /&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;GradientStop Color=&#34;Red&#34; Offset=&#34;0.25&#34; /&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;GradientStop Color=&#34;Blue&#34; Offset=&#34;0.75&#34; /&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;GradientStop Color=&#34;LimeGreen&#34; Offset=&#34;1.0&#34; /&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;/LinearGradientBrush&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;/Rectangle.Fill&#62;<br />&nbsp;&nbsp;&#60;/Rectangle&#62;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&#60;Rectangle Width=&#34;140&#34; Height=&#34;70&#34; Canvas.Left=&#34;155&#34; Canvas.Top=&#34;10&#34;&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;Rectangle.Fill&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;LinearGradientBrush&nbsp;&nbsp;StartPoint=&#34;0,0&#34; EndPoint=&#34;1,0&#34;&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;GradientStop Color=&#34;Yellow&#34; Offset=&#34;0.0&#34; /&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;GradientStop Color=&#34;Red&#34; Offset=&#34;0.25&#34; /&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;GradientStop Color=&#34;Blue&#34; Offset=&#34;0.75&#34; /&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;GradientStop Color=&#34;LimeGreen&#34; Offset=&#34;1.0&#34; /&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;/LinearGradientBrush&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;/Rectangle.Fill&#62;<br />&nbsp;&nbsp;&#60;/Rectangle&#62;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&lt!-- Radial gradients --&gt;<br />&nbsp;&nbsp;&#60;Rectangle Width=&#34;140&#34; Height=&#34;70&#34; Canvas.Left=&#34;10&#34; Canvas.Top=&#34;110&#34;&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;Rectangle.Fill&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;RadialGradientBrush&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;GradientStop Color=&#34;Yellow&#34; Offset=&#34;0.0&#34; /&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;GradientStop Color=&#34;Red&#34; Offset=&#34;0.25&#34; /&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;GradientStop Color=&#34;Blue&#34; Offset=&#34;0.75&#34; /&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;GradientStop Color=&#34;LimeGreen&#34; Offset=&#34;1.0&#34; /&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;/RadialGradientBrush&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;/Rectangle.Fill&#62;<br />&nbsp;&nbsp;&#60;/Rectangle&#62;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&#60;Rectangle Width=&#34;140&#34; Height=&#34;70&#34; Canvas.Left=&#34;155&#34; Canvas.Top=&#34;110&#34;&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;Rectangle.Fill&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;RadialGradientBrush GradientOrigin=&#34;1,0&#34;&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;GradientStop Color=&#34;Yellow&#34; Offset=&#34;0.0&#34; /&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;GradientStop Color=&#34;Red&#34; Offset=&#34;0.25&#34; /&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;GradientStop Color=&#34;Blue&#34; Offset=&#34;0.75&#34; /&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;GradientStop Color=&#34;LimeGreen&#34; Offset=&#34;1.0&#34; /&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;/RadialGradientBrush&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;/Rectangle.Fill&#62;<br />&nbsp;&nbsp;&#60;/Rectangle&#62;<br />&#60;/Canvas&#62;<!--c2--></div><!--ec2--><br /><br /><img src="http://files.myopera.com/namdh/blog/silverlight_part4_6.png" border="0" class="linked-image" /><br /><br />Bạn cũng có thể dùng gradient để vẽ viền của một hình họa.<br /><br />Hình minh họa sau cho thấy các gradient stop của LinearGradientBrush đầu tiên trong ví dụ trước.<br /><img src="http://files.myopera.com/namdh/blog/silverlight_part4_7.jpg" border="0" class="linked-image" /><br /><br /><b>Vẽ ảnh dùng ImageBrush</b><br />Một kiểu bút vẽ khác là ImageBrush. Mặc nhiên, hình ảnh sẽ được ép lại sao cho vừa với toàn bộ hình, bạn cũng có thể dùng thuộc tính Stretch để kiểm soát cách bút vẽ ép hình ảnh. Ví dụ sau dùng hai đối tượng ImageBrush với các giá trị Stretch khác nhau để vẽ hai đối tượng Rectangle.<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;Canvas Width=&#34;300&#34; Height=&#34;300&#34;<br />&nbsp;&nbsp; xmlns=&#34;http&#58;//schemas.microsoft.com/client/2007&#34;<br />&nbsp;&nbsp; xmlns&#58;x=&#34;http&#58;//schemas.microsoft.com/winfx/2006/xaml&#34;<br />&nbsp;&nbsp; Background=&#34;White&#34;&#62;<br />&nbsp;&nbsp;&#60;Rectangle Height=&#34;180&#34; Width=&#34;90&#34; Canvas.Left=&#34;10&#34; Canvas.Top=&#34;10&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stroke=&#34;Black&#34; StrokeThickness=&#34;1&#34;&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;Rectangle.Fill&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;ImageBrush ImageSource=&#34;star.png&#34;/&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;/Rectangle.Fill&#62;<br />&nbsp;&nbsp;&#60;/Rectangle&#62;<br />&nbsp;&nbsp;&#60;Rectangle Height=&#34;180&#34; Width=&#34;90&#34; Canvas.Left=&#34;110&#34; Canvas.Top=&#34;10&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stroke=&#34;Black&#34; StrokeThickness=&#34;1&#34;&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;Rectangle.Fill&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#60;ImageBrush ImageSource=&#34;star.png&#34; Stretch=&#34;Uniform&#34;/&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&#60;/Rectangle.Fill&#62;<br />&nbsp;&nbsp;&#60;/Rectangle&#62;<br />&#60;/Canvas&#62;<!--c2--></div><!--ec2--><br /><img src="http://files.myopera.com/namdh/blog/silverlight_part4_8.png" border="0" class="linked-image" /><br /><br />]]></description>
		<pubDate>Thu, 04 Sep 2008 08:20:16 +0000</pubDate>
		<guid>http://www.vietphotoshop.com/forum/index.php?showtopic=19613</guid>
	</item>
	<item>
		<title>Silverlight- công nghệ web tương lai</title>
		<link>http://www.vietphotoshop.com/forum/index.php?showtopic=19610</link>
		<description><![CDATA[Một Canvas là một đối tượng được tạo ra để chứa các đối tượng điều khiển (control) và các đối tượng hình vẽ (shape). Tất cả các file XAML phải chứa ít nhất một Canvas và nó sẽ được coi là đối tượng gốc. Bài này giới thiệu về đối tượng Canvas và cách thêm, xác định vị trí và kích thước của các đối tượng con.<br /><br /><b>Thêm một đối tượng vào Canvas</b><br />Một Canvas chứa và đặt vị trí cho các đối tượng khác. Để thêm một đối tượng vào Canvas, bạn hãy chèn nó vào giữa cắp thẻ &lt;Canvas&gt;. Ví dụ sau sẽ thêm một hình ellipse và trong một Canvas. Vì Canvas là đối tượng gốc nên tốt hơn hết là bạn nên khai báo các thuộc tính về namespace (xmlns) cần thiết cho nó.<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;Canvas<br />&nbsp;&nbsp; xmlns=&#34;http&#58;//schemas.microsoft.com/client/2007&#34;<br />&nbsp;&nbsp; xmlns&#58;x=&#34;http&#58;//schemas.microsoft.com/winfx/2006/xaml&#34;&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&#60;Ellipse <br />&nbsp;&nbsp;&nbsp;&nbsp; Height=&#34;200&#34; Width=&#34;200&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp; Stroke=&#34;Black&#34; StrokeThickness=&#34;10&#34; Fill=&#34;SlateBlue&#34; /&#62;<br />&#60;/Canvas&#62;<!--c2--></div><!--ec2--><br /><br /><img src="http://files.myopera.com/namdh/blog/silverlight_part3_1.png" border="0" class="linked-image" /><br /><br />Một Canvas có thể chứa một số bất kỳ các đối tượng khác, thậm chí cả các Canvas khác.<br /><b>Đặt vị trí cho một đối tượng</b><br />Để đặt vị trí cho một đối tượng trong Canvas, bạn đặt các thuộc tính Canvas.Left và Canvas.Top trên đối tượng đó. Thuộc tính Canvas.Left chỉ ra khoảng cách từ đối tượng đế cạnh bên trái của Canvas chứa nó, và Canvas.Top chỉ ra khoảng cách đến cạnh trên của Canvas. Ví dụ sau cũng vẫn dùng đối tượng ellipse trong cùng ví dụ trước như đặt lại ví trí của nó là 30 pixel (điểm trên màn hình) tính từ bên trái và 30 pixel tính từ phía trên của Canvas.<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;Canvas<br />xmlns=&#34;http&#58;//schemas.microsoft.com/client/2007&#34;<br />xmlns&#58;x=&#34;http&#58;//schemas.microsoft.com/winfx/2006/xaml&#34;&#62;<br />&#60;Ellipse<br />Canvas.Left=&#34;30&#34; Canvas.Top=&#34;30&#34;<br />Height=&#34;200&#34; Width=&#34;200&#34;<br />Stroke=&#34;Black&#34; StrokeThickness=&#34;10&#34; Fill=&#34;SlateBlue&#34; /&#62;<br />&#60;/Canvas&#62;<!--c2--></div><!--ec2--><br /><br />Hình minh họa sau sẽ giúp bạn hiểu hơn về hệ tọa độ được dùng trong Canvas và vị trí của hình ellipse trong ví dụ trước.<br /><img src="http://files.myopera.com/namdh/blog/canvas_left_top.png" border="0" class="linked-image" /><br /><br /><b>z-order</b><br />Thuật ngữ z-order được dùng để chỉ độ sâu (chiều thứ 3 trên hệ tọa độ xyz), hay nói cách khác là nếu có nhiều đối tượng nằm chồng lên nhau thì z-order sẽ xác định đối tượng nào nằm trên, đối tượng nào nằm dưới<br />Mặc nhiên, z-order của các đối tượng trong một Canvas sẽ được xác định bởi thứ tự chúng được khai báo. Đối tượng nào được khai báo sau sẽ nằm lên trên đối tượng được khai báo trước. Ví dụ sau sẽ tạo ra 3 ellipse, bạn sẽ thấy đối tượng được khai báo sau cùng (màu xanh lá cây) sẽ nằm lên trên các đối tượng khác.<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;Canvas<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlns=&#34;http&#58;//schemas.microsoft.com/client/2007&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlns&#58;x=&#34;http&#58;//schemas.microsoft.com/winfx/2006/xaml&#34;&#62;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&#60;Ellipse <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Canvas.Left=&#34;5&#34; Canvas.Top=&#34;5&#34; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Height=&#34;200&#34; Width=&#34;200&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stroke=&#34;Black&#34; StrokeThickness=&#34;10&#34; Fill=&#34;Silver&#34; /&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&#60;Ellipse <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Canvas.Left=&#34;50&#34; Canvas.Top=&#34;50&#34; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Height=&#34;200&#34; Width=&#34;200&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stroke=&#34;Black&#34; StrokeThickness=&#34;10&#34; Fill=&#34;DeepSkyBlue&#34; /&#62;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&#60;Ellipse <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Canvas.Left=&#34;95&#34; Canvas.Top=&#34;95&#34; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Height=&#34;200&#34; Width=&#34;200&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stroke=&#34;Black&#34; StrokeThickness=&#34;10&#34; Fill=&#34;Lime&#34; /&#62;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&#60;/Canvas&#62;<!--c2--></div><!--ec2--><br /><br /><img src="http://files.myopera.com/namdh/blog/silverlight_part3_2.png" border="0" class="linked-image" /><br /><br />Bạn có thể thay đổi điều này bằng cách đặt lại thuộc tính Canvas.ZIndex của đối tượng bên trong Canvas, giá trị càng cao thì sẽ nằm càng gần về phía trước, và càng thấp thì càng nằm ra sau. Ví dụ sau cũng sẽ tương tự như cái trước, chỉ có một thay đổi là các giá trị của z-order đã được đặt ngược lại, bạn sẽ thấy trong trường hợp này, hình ellipse màu bạc sẽ nằm lên trên cùng.<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;Canvas<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlns=&#34;http&#58;//schemas.microsoft.com/client/2007&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlns&#58;x=&#34;http&#58;//schemas.microsoft.com/winfx/2006/xaml&#34;&#62;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&#60;Ellipse <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Canvas.ZIndex=&#34;3&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Canvas.Left=&#34;5&#34; Canvas.Top=&#34;5&#34; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Height=&#34;200&#34; Width=&#34;200&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stroke=&#34;Black&#34; StrokeThickness=&#34;10&#34; Fill=&#34;Silver&#34; /&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&#60;Ellipse <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Canvas.ZIndex=&#34;2&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Canvas.Left=&#34;50&#34; Canvas.Top=&#34;50&#34; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Height=&#34;200&#34; Width=&#34;200&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stroke=&#34;Black&#34; StrokeThickness=&#34;10&#34; Fill=&#34;DeepSkyBlue&#34; /&#62;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&#60;Ellipse <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Canvas.ZIndex=&#34;1&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Canvas.Left=&#34;95&#34; Canvas.Top=&#34;95&#34; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Height=&#34;200&#34; Width=&#34;200&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stroke=&#34;Black&#34; StrokeThickness=&#34;10&#34; Fill=&#34;Lime&#34; /&#62;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&#60;/Canvas&#62;<!--c2--></div><!--ec2--><br /><br /><img src="http://files.myopera.com/namdh/blog/silverlight_part3_3.png" border="0" class="linked-image" /><br /><br />Chiều rộng và chiều cao<br />Canvas, hình họa và nhiều thành phần khác đều có thuộc thuộc tính Width và Height cho phép chỉ ra kích thước của nó. Ví dụ sau sẽ tạo một hình ellipse cao 200 pixel và rộng 200 pixel, nhớ là không được dùng giá trị theo kiểu phần trăm %.<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;Canvas<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlns=&#34;http&#58;//schemas.microsoft.com/client/2007&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlns&#58;x=&#34;http&#58;//schemas.microsoft.com/winfx/2006/xaml&#34;&#62;<br />&nbsp;&nbsp;&#60;Ellipse <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Canvas.Left=&#34;30&#34; Canvas.Top=&#34;30&#34; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Height=&#34;200&#34; Width=&#34;200&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stroke=&#34;Black&#34; StrokeThickness=&#34;10&#34; Fill=&#34;SlateBlue&#34; /&#62;<br />&#60;/Canvas&#62;<!--c2--></div><!--ec2--><br /><br /><img src="http://files.myopera.com/namdh/blog/silverlight_part3_4.png" border="0" class="linked-image" /><br /><br />Ví dụ tiếp theo đặt Width và Height của đối tượng Canvas cha thành 200 và đặt màu nền cho nó là Lime<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;Canvas<br />&nbsp;&nbsp; xmlns=&#34;http&#58;//schemas.microsoft.com/client/2007&#34;<br />&nbsp;&nbsp; xmlns&#58;x=&#34;http&#58;//schemas.microsoft.com/winfx/2006/xaml&#34;<br />&nbsp;&nbsp; Width=&#34;200&#34; Height=&#34;200&#34;<br />&nbsp;&nbsp; Background=&#34;LimeGreen&#34;&#62;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&#60;Ellipse <br />&nbsp;&nbsp;&nbsp;&nbsp;Canvas.Left=&#34;30&#34; Canvas.Top=&#34;30&#34; <br />&nbsp;&nbsp;&nbsp;&nbsp;Height=&#34;200&#34; Width=&#34;200&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;Stroke=&#34;Black&#34; StrokeThickness=&#34;10&#34; Fill=&#34;SlateBlue&#34; /&#62;<br />&#60;/Canvas&#62;<!--c2--></div><!--ec2--><br /><br /><img src="http://files.myopera.com/namdh/blog/silverlight_part3_5.png" border="0" class="linked-image" /><br /><br />Khi chạy ví dụ này, hình chữ nhật màu xanh lá cây chính là Canvas, phần màu trắng là phần còn lại của Silverlight plug-in không bị che phủ bởi Canvas. Bạn sẽ thấy rằng phần nằm ngoài Canvas của hình ellipse sẽ không bị xén mất.<br />Nếu không đặt thì giá trị mặc nhiên của Width và Height sẽ là 0.<br /><br /><b>Các Canvas lồng nhau</b><br />Một Canvas có thể chứa những Canvas khác. trong ví dụ sau bạn sẽ thấy một Canvas lại chứa 2 Canvas khác bên trong.<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;Canvas<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlns=&#34;http&#58;//schemas.microsoft.com/client/2007&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlns&#58;x=&#34;http&#58;//schemas.microsoft.com/winfx/2006/xaml&#34;&#62;<br />&nbsp;&nbsp;&#60;Canvas Height=&#34;50&#34; Width=&#34;50&#34; Canvas.Left=&#34;30&#34; Canvas.Top=&#34;30&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Background=&#34;blue&#34;/&#62;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&#60;Canvas Height=&#34;50&#34; Width=&#34;50&#34; Canvas.Left=&#34;130&#34; Canvas.Top=&#34;30&#34;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Background=&#34;red&#34;/&#62;<br />&#60;/Canvas&#62;<!--c2--></div><!--ec2--><br /><img src="http://files.myopera.com/namdh/blog/silverlight_part3_6.png" border="0" class="linked-image" />]]></description>
		<pubDate>Thu, 04 Sep 2008 07:52:08 +0000</pubDate>
		<guid>http://www.vietphotoshop.com/forum/index.php?showtopic=19610</guid>
	</item>
</channel>
</rss>