1、工具准备

(1)下载 Silverlight 1.1 Alpha September Refresh

(2)下载 Microsoft Silverlight 1.1 Alpha September Refresh Software Development Kit (SDK)

(3)下载 Microsoft Visual Studio 2008 Beta 2

(4)下载 Microsoft Silverlight Tools Alpha for Visual Studio 2008 Beta 2

以上链接来自MS,如果失效,请自己Search。依次安装,完成Silverlight1.1的开发环境的安装。

2、第一个Hello,World 程序

(1)打开VS2008B2,项目类型选择Silverlight,模版选择Silverlight Project,名称随意(注意不要有非法字符),点击确定建立第一个Siliverlight项目。

image

(2)IDE自动生成的代码文件如下:

image

(3)运行TestPage.html,出现一个空白的Web页面。

(4)打开Page.xaml文件,在Canvas标签之间加入TextBlock标签,完成后的代码如下:

<Canvas x:Name="parentCanvas" xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Loaded="Page_Loaded" x:Class="HelloWorld.Page;assembly=ClientBin/HelloWorld.dll" Width="640" Height="480" Background="Yellow" > <TextBlock x:Name="MyHelloWorld" Text="Hello,World" FontSize="40"></TextBlock> </Canvas>

(5)在IE中预览TestPage.html。

image

(6)打开Page.xaml.cs文件,加入MyHelloWorld的鼠标点击事件处理程序,完成后的代码如下:

//...................................... namespace HelloWorld { public partial class Page : Canvas { public void Page_Loaded(object o, EventArgs e) { // Required to initialize variables InitializeComponent(); //add code here. //add an Event handle to "MyHelloWorld". MyHelloWorld.MouseLeftButtonDown += new MouseEventHandler(MyHelloWorld_MouseLeftButtonDown); } void MyHelloWorld_MouseLeftButtonDown(object sender, MouseEventArgs e) { //throw new NotImplementedException(); MyHelloWorld.Text = "You hit me!"; MyHelloWorld.FontSize = 60; } } }

完成后不要忘记重新编译下应用程序。

(7)在IE中预览TestPage.html。鼠标点击“Hello,World”,文字是否变了呢?

imageimage

 

3、相比传统的Asp.net Web 页面,我们做了什么?

我们没有编辑Html和aspx页面,没有编写html代码和服务器控件,但我们编辑了xaml代码。

对于C#代码,我们没有任何的不同,获得要编程的对象(标识:MyHelloWorld,在xaml中用x:Name表示),然后对该对象进行随心所欲的蹂躏。

posted @ 2007-10-21 22:16 Unicorn 阅读(88) 评论(0) 编辑

通过二者的对比,将更有助于学习代理。

 

先看一段C的面向过程的函数指针代码:

int max(int x,int y)

{

return (x>y?x:y);

}

int min(int x,int y)

{

return(x<y?x:y);

}

int sub(int x, int y)

{

return(x+y);

}

int minus(int x,int y)

{

return(x-y);

}

void test(int (*p)(int,int),

         int (*q)(int,int),

         int a,

         int b)

{

int Int1,Int2;

Int1=(*p)(a,b);

Int2=(*q)(a,b);

printf("%d,\t%d\n",Int1,Int2);

}

 

int main(int argc, _TCHAR* argv[])

{

    test(max,min,10,3);

    test(sub,minus,10,3);

    return 0;

}

 

 

再看一段C#的代理代码:

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication3

{

class MathClass

{

public static int max(int a, int b)

{

return (a > b ? a : b);

}

public static int min(int a, int b)

{

return (a < b ? a : b);

}

public static int sub(int a, int b)

{

return (a + b);

}

public static int minus(int a, int b)

{

return (a - b);

}

}

class Handler

{

public delegate int Calculation(int a, int b);

public static void EventHandler(Calculation c1,Calculation c2, int a, int b)

{

int x, y;

x = c1(a, b);

y = c2(a, b);

 

Console.WriteLine("{0}:{1}\n{2}:{3}",c1.Method.ToString(), x, c2.Method.ToString(),y);

}

}

class Program

{

static void Main(string[] args)

{

Handler.EventHandler(new Handler.Calculation(MathClass.max), new Handler.Calculation(MathClass.min), 10, 3);

Handler.EventHandler(new Handler.Calculation(MathClass.sub), new Handler.Calculation(MathClass.minus), 10, 3);

Console.ReadKey();

}

}

}

 

看完就明白什么是代理了。

posted @ 2007-09-10 21:57 Unicorn 阅读(72) 评论(0) 编辑

<div style="filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=Sunset.jpg, sizingMethod=scale);width: 100px; height: 100px">
    </div>


     试一试:试试实现剪切图片以适用容器大小的效果。

 

原图:C:\Documents and Settings\All Users\Documents\My Pictures\示例图片\Sunset.jpg ,800×600

 

AlphaImageLoader兼容性:IE5.5+

语法:

filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=bEnabled , sizingMethod=sSize , src=sURL )

属性:

enabled : 
可选项。布尔值(Boolean)。设置或检索滤镜是否激活。true | false

true
: 
默认值。滤镜激活。

false
: 
滤镜被禁止。

sizingMethod
: 
可选项。字符串(String)。设置或检索滤镜作用的对象的图片在对象容器边界内的显示方式。

crop
: 
剪切图片以适应对象尺寸。

image
: 
默认值。增大或减小对象的尺寸边界以适应图片的尺寸。

scale
: 
缩放图片以适应对象的尺寸边界。

src
: 
必选项。字符串(String)。使用绝对或相对 url 地址指定背景图像。假如忽略此参数,滤镜将不会作用。

特性:

Enabled
: 
可读写。布尔值(Boolean)。参阅 enabled 属性。

sizingMethod
: 
可读写。字符串(String)。参阅 sizingMethod 属性。

src
: 
可读写。字符串(String)。参阅 src 属性。

说明:

在对象容器边界内,在对象的背景和内容之间显示一张图片。并提供对此图片的剪切和改变尺寸的操作。如果载入的是PNG(Portable Network Graphics)格式,则0%-100%的透明度也被提供。
PNG(Portable Network Graphics)格式的图片的透明度不妨碍你选择文本。也就是说,你可以选择显示在PNG(Portable Network Graphics)格式的图片完全透明区域后面的内容。

示例:

#idDiv{position:absolute; left:140px; height:400; width:400;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='rain1977.gif',sizingMethod='scale');}
.dream{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/earglobe.gif');}

posted @ 2007-06-06 20:02 Unicorn 阅读(8241) 评论(0) 编辑

--清空日志
DUMP TRANSACTION 库名 WITH NO_LOG
--截断事务日志
BACKUP LOG 数据库名 WITH NO_LOG
--收缩数据库
DBCC SHRINKDATABASE(数据库名)
----

posted @ 2007-05-28 18:23 Unicorn 阅读(412) 评论(0) 编辑
posted @ 2007-05-27 17:44 Unicorn 阅读(266) 评论(0) 编辑

(1)用Datatime和TmeSpan

这个不说了,在要测量的代码前后加上2个DateTime.Now,2者相减,得到一个TmeSpan。

DateTime d = DateTime.Now;

for (int i = 0; i < 1000; i++)

{

 ++i;

}

Console.WriteLine(DateTime.Now - d);

(2)用Stopwatch,简单,明了,精确。

// 使用 StopWatch 进行测量

Stopwatch sw = new Stopwatch();

sw.Start();

 

 for (int i = 0; i < 1000; i++) { ++i; }

 

sw.Stop();

Console.WriteLine(sw.Elapsed);

 

StopWatch 几个关键属性和方法。
Elapsed :获取当前实例测量得出的总运行时间。在测试期间或者结束时均可获取。
IsRunning : 获取一个指示 Stopwatch 计时器是否在运行的值。 
Start : 开始或继续测量某个时间间隔的运行时间。 多次调用 Start 前,需要使用 Reset 重置,否则会累加多次测量结果。
Stop : 停止测量某个时间间隔的运行时间。
Reset : 停止时间间隔测量,并将运行时间重置为零。

(3)使用QueryPerformanceFrequency函数和QueryPerformanceCounter函数,这个比较麻烦,还用到了Interop。

 

using System;

class Class1
{
    [System.Runtime.InteropServices.DllImport("Kernel32.dll")]
    static extern bool QueryPerformanceCounter(ref long count);

    [System.Runtime.InteropServices.DllImport("Kernel32.dll")]
    static extern bool QueryPerformanceFrequency(ref long count);

    [STAThread]
    static void Main(string[] args)
    {
        long count = 0;
        long count1 = 0;
        long freq = 0;
        double result = 0;

        QueryPerformanceFrequency(ref freq);
        QueryPerformanceCounter(ref count);

        //开始的时候没有这层循环,所得数据浮动很大,添加这层循环来使得结果更加平均
        for (int i = 0; i < 500; i++)
        {
            //需要测试的模块
        }

        QueryPerformanceCounter(ref count1);

        count = count1 - count;
        result = (double) (count) / (double) freq;

        Console.WriteLine("耗时: {0} 秒", result);
        Console.ReadLine();
    }
}
posted @ 2007-05-27 16:54 Unicorn 阅读(619) 评论(0) 编辑

1、SVN的服务器配置,这个太多了,Google一下有很多。

2、SVN的常规客户端工具:TortoiseSVN,有中文版本。

3、SVN的VS管理插件:http://ankhsvn.tigris.org/,1。0版本的很不错,可以参考http://www.cnblogs.com/hardrock/archive/2005/12/14...

 

有时间继续补充。。。

posted @ 2007-05-27 11:07 Unicorn 阅读(218) 评论(0) 编辑
摘要: 可伸缩向量图形介绍(SVG) http://www.xml.org.cn/dispbbs.asp?boardID=21&ID=12 http://www.chinasvg.com/index.php?option=com_front... Scalable Vector Graphics (简称SVG),“可升级矢量图形”的意思,它是由 W3C 制定的基于可扩展标记语言 (XML) 来描述...阅读全文
posted @ 2007-05-15 09:58 Unicorn 阅读(89) 评论(0) 编辑
摘要: http://www.itlearner.com/code/vml/step1.html 由于项目原因看了一下vml,写了一个Web工作流的设计器雏形! http://www.cnblogs.com/ocoogo/archive/2007/05/14/7... http://www.netfxlive.com/阅读全文
posted @ 2007-05-15 09:55 Unicorn 阅读(71) 评论(0) 编辑
摘要: function OpenShortcutMenu( domObj ){var pop = window.createPopup();var popBody = pop.document.body;popBody.innerHTML = "Testing..."pop.show(window.event.x, 76, 140,200, document.body);} (1)var pop 变量:...阅读全文
posted @ 2007-04-30 14:25 Unicorn 阅读(5540) 评论(0) 编辑