
技术文章
文章平均质量分 81
yom_an
苟安者耻
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[.NET 基于角色安全性验证] 之二:ASP.NET Forms 身份验证流程分析
MSDN 中提及 FormsAuthenticationModule 在 Forms 身份验证中起到了关键作用,那么这背后究竟隐藏了什么?本分将简要分析 Forms 身份验证流程,以便让大家更加清楚地了解并使用它。 FormsAuthenticationModule 是一个 Http Module,Forms 身份验证通过 FormsAuthenticationModule 参与 ASP.NET转载 2009-07-14 10:37:00 · 323 阅读 · 0 评论 -
C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(六)完美移动
经过前面的介绍和学习,我们分别掌握了如何点击鼠标让对象移动,并且实现2D人物的动作动画。那么,如何将两者完美的进行融合呢?这一节的内容将涉及到很多重要的技术及技巧,很关键哦。 那么同样的,前台xaml还是保持不变,接下来看后台C#第一部分: int count = 0; Image Spirit; Storyboard storyboard;转载 2009-06-30 16:30:00 · 258 阅读 · 0 评论 -
C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十二)神奇的副本地图
前面几节详细的讲解了游戏地图的完整构造,比较有难度的是关于地图内层如障碍物的实现。A*算法往往能让众多的初学者望而止步,斜度α地图则更需要一定的几何知识及抽象思维。很多朋友就问了:什么年代了,都在说面向对象、提高开发效率,难道就没有大众化可以让各层次能力的朋友们都能轻松制作地图引擎的方法吗?大家是否还记得上一节中遗留的一个小悬念,杀手涧就是它了:神奇的副本地图。 大家先看上图,左边的转载 2009-06-30 16:36:00 · 270 阅读 · 0 评论 -
C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(三)让物体动起来③
第三种方法,DispatcherTimer动画,该类型动画与CompositionTarget动画类似,是基于界面线程的逐帧动画,但他与CompositionTarget动画不同,DispatcherTimer动画可以轻松的进行参数设置: xaml界面代码仍然沿用第一节的,那么接下来我们在后台代码中创建相关对象: Rectangle rect; //创建一个方块作为演示转载 2009-06-30 16:28:00 · 258 阅读 · 0 评论 -
C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二)让物体动起来②
第二种方法,CompositionTarget动画,官方描述为:CompositionTarget对象可以根据每个帧回调来创建自定义动画。其实直接点,CompositionTarget创建的动画是基于每次界面刷新后触发的,与窗体刷新率保持一致,所以频率是固定的,很难人工介入控制。 那么如何使用它?xaml的界面代码还是和上一篇中描述的一样,这里不累述了。那么接下来就是创建对象并注册事件,全转载 2009-06-30 16:28:00 · 253 阅读 · 0 评论 -
C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(一)让物体动起来①
序:自从QXGame(WPF GAME ENGINE)游戏引擎公布以来,受到很多朋友的热切关注,于是乎有了写教程的想法。那么从今天开始,我将带领大家一步一步的学会如何使用纯C#开发WPF/Silverlight游戏引擎,过程中我会尽量的开源,并对相关小技巧进行解释和介绍,比较复杂的算法原理我会给大家一条绝对可行的思路,至于如何处理这些复杂的算法,那是仁者见仁,智者见智了,或许您写的算法比我的更好呢转载 2009-06-30 16:26:00 · 454 阅读 · 0 评论 -
C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十三)牵引式地图移动模式①
在前面诸多的章节里,我就地图构造的实现做了讲解,至此还遗留着一个关键问题:在游戏中是角色在移动还是地图在移动?它们之间的移动(位移)关系是如何实现的? 那么在接下来的章节中我将围绕这两个问题进行详细的分析解说。 首先,还得从游戏模式开始说起。目前2D俯视游戏中以即使战略、SLG、RPG(ARPG)等类型的游戏为主流。在即时战略、SLG大地图中,地图的移动原理是:当鼠标处于游戏窗转载 2009-06-30 16:35:00 · 327 阅读 · 0 评论 -
C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十)斜度α地图的构造及算法
在当前的网络游戏中,地图基本都是采取一定斜度的拼装地图,这其中存在两种斜度地图的构造方式: 第一种我称之为伪斜度地图:该类型地图表现层图片为斜度的,但地图基底障碍物等的构造则实为正方形,如下图: 其实最典型的例子就是上一节所演示的内容了,地图是斜的,但是我们却用垂直的障碍物对其进行基底布局,这就是典型的伪斜度地图了。 这样的地图优点在于可以使用简单直接的地图构造算法(上转载 2009-06-30 16:32:00 · 332 阅读 · 0 评论 -
C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(七)传说中的A*寻径算法
关于地图引擎方面的处理涉及到两个方面的知识: 1)地图的实现(包括地图的切割、合成、呈现方式等) 2)地图物件的实现(包括地图中实现寻路、遮罩、传送点等) 为了让大家能更加有兴趣深入后面的知识,我选择先从地图寻路开始讲解吧: 目前游戏中的寻路最经典的莫过于A*(A Star)寻路了,它是一种寻路思维的合集,那么基于它产生的算法则又有多种,例如曼哈顿启发式算法、对角转载 2009-06-30 16:31:00 · 281 阅读 · 0 评论 -
C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(八) 完美实现A*寻径动态动画
本节将紧接着上一节,在它的基础上实现鼠标点击动态创建完美的A*寻路动画。(模拟游戏中人物的真实移动,这次可是有障碍物的,可以说基本上完成了人物移动引擎的一半了呢) 首先,在上一节的代码前部分加入一个叫做player的圆形作为我们将要控制的对象(模拟游戏中的主角,下文均称之为“主角”): Ellipse player = new Ellipse(); //用一个圆来模拟目转载 2009-06-30 16:31:00 · 298 阅读 · 0 评论 -
C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十四) 精灵控件横空出世!①
在上一节中,我们实现了地图牵引式移动,同时还遗留着一个小尾巴:主角和障碍物该如何跟随着地图的移动而移动? 上节中有点到,只要在地图移动的同时,时时根据主角等对象物体的X,Y坐标进行相对于地图的X,Y坐标移动即可达到目的。但是由此又引来了新问题:主角为Image控件,障碍物则为矩形控件,它们都没有X,Y这两个属性,我们该如何对它们的坐标进行记录呢? 最简单且最直接的方法莫过于将它们转载 2009-06-30 16:38:00 · 599 阅读 · 0 评论 -
ASP.NET 母版页
可以使用母版页以编程方式执行许多公共任务,包括:访问在母版页上定义的成员(包括公共属性/方法或控件)。动态地将母版页附加到内容页。访问母版页上的成员为了提供对母版页成员的访问,Page 类公开了 Master 属性。若要从内容页访问特定母版页的成员,可以通过创建 @ MasterType 指令创建对此母版页的强类型引用。可使用该指令指向一个特定的母版页。当该内容页创建自己的 Mast转载 2009-07-11 09:31:00 · 1133 阅读 · 0 评论 -
javascript与c#后台交互
在ASP.net开发中,经常会用到后台和前台的交互,就此总结了一点C#和JavaScript相互操作的方法 1.在后台c#代码中调用jacascript的方法 Javascript代码: function test() { alert("oec2003"); return false; } c#代码: protected void Button1_Click(o原创 2009-07-10 23:31:00 · 272 阅读 · 0 评论 -
C#简单游戏外挂制作(以Warcraft Ⅲ为例)
网上有很多外挂制作的教程,大多是讲针对大型网络游戏的,主要包含一些抓包、反汇编、C++的知识综合。事实也如此,常见的外挂都是使用VC++写的,从来没有过C#或者其他.net语言编写的外挂。 作为微软.NET技术的忠实粉丝,这难免是一种遗憾。不过不要紧,下面流牛木马就教大家两招,包教包会,免收学费。 :) 其实作为游戏外挂来说,主要就是三个功能:模拟键盘操作、模拟鼠标操作、修改内转载 2009-07-12 10:10:00 · 492 阅读 · 0 评论 -
C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十) 第一部分拓展小结篇
写了20节,一路向追着鬼子打一样都没停过,索性也想暂时休息一下整理整理思绪好完成后面的第二部分更为精彩的内容:诸如跟随式地图移动模式、NPC & 怪物 与主角的互动、对象AI、攻击与魔法、各种类型伤害计算、完美的RPG游戏界面……等等等等,激动吗?讲实话:我很激动! 读者声音:还没写就开始激动了,典型的傻子。 ^_^||言归正传,本节就先来个承上启下的的小结吧,我打算分4个部分对转载 2009-07-12 10:07:00 · 308 阅读 · 0 评论 -
C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十八) 完美精灵之八面玲珑(WPF Only)②
紧接着上一节,首先得解释一下为什么需要将这272张图片合成为一张大图。因为如果游戏中还有装备、坐骑等其他设置,那么我们就需要对图片源进行时时的合成;同时对272张甚至更多的图片进行合成效率高还是对2张大图进行合成效率高这是显而易见的。在本节例子中,主角由身体(衣服)及武器两个部分组成;因此,我们还需要定义一个交错数组来保存已经加载的角色装备合成图到内存中: /// /// 角色转载 2009-07-12 10:03:00 · 230 阅读 · 0 评论 -
C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十七) 完美精灵之八面玲珑(WPF Only)①
通过C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十四) 精灵控件横空出世!①、C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十五) 精灵控件横空出世!②的学习,我们掌握了如何创建一个初具雏形的精灵控件。目前我已经赋予了它少量的属性,但是离完美还有很长的距离。因此,我打算在后面的章节中以辅助游戏设计为前提,对该精灵控件转载 2009-07-12 10:02:00 · 360 阅读 · 0 评论 -
C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十六) 牵引式地图移动模式②
精灵控件让游戏开发更美好!有了它,离完善牵引式地图移动模式可谓一步之遥。只剩下最后一个环节了,大家加油吧。 上一节,(C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十五) 精灵控件横空出世!② )我在界面线程中通过时时设置Canvas.SetLeft(Spirit, mapleft + Spirit.X);和Canvas.SetTop(Spirit转载 2009-07-12 09:58:00 · 273 阅读 · 0 评论 -
C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十五) 精灵控件横空出世!②
紧接着上一节,我们打开QXSpirit.xaml.cs文件。在游戏设计中,为了能够轻易控制及管理精灵的各项属性及功能等,我赋予每个精灵一个专属线程,它在精灵的使用中起到关键作用: public QXSpirit() { InitializeComponent(); InitThread(); //初始化精灵线程 }转载 2009-07-12 09:57:00 · 295 阅读 · 0 评论 -
C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(五)实现2D人物动画②
第二种方法我称之为图片截取法,准备工作:这里我以创建主角向右方向施法动画为例。首先需要将10帧150*150的图片通过Photoshop或其他方式合成为一张1500*150的大图,如下图: 图片看不清楚?请点击这里查看原图(大图)。 从图上可以很清晰的看出主角的整个流畅的施法流程。然后将这张图片保存到项目文件夹中的binDebug文件夹中,如下图: 为什么必须转载 2009-06-30 16:29:00 · 412 阅读 · 1 评论 -
C#制作CAB压缩包压缩解压类
以下为引用的内容:using System;using System.Collections.Generic;using System.Text;using System.IO;using System.Diagnostics;namespace Com.ImYan.CabHelper{ /// /// CAB文件压缩解压类 /// public class C转载 2009-06-18 21:37:00 · 962 阅读 · 0 评论 -
在C#中启动另一个程序的实现方法
一段实例代码,程序的目的是使用C#实现启动另一程序的方法。技术总监給出了我们这样一个有效的启动程序的有效方法,現在和大家分享下: 以下是引用片段: private void btnCreate_Click(object sender, EventArgs e) ...{ int hWnd = FindWindow(null, "test");//窗體的名稱 //check i转载 2009-06-17 22:16:00 · 311 阅读 · 0 评论 -
[C#学习]枚举系统安装的所有打印机
最近在论坛中不少网友问"如何把Windows安装的所有打印机列出来",在下面的程序中我们将把系统中所安装的打印机用列表框列出来,同时为默认打印机设置缺省值。 在下面的程序中我们用到了两个主要的类,把所有的打印机列表出来用到了PrinterSettings 类,获取系统默认打印机用到了PrintDocument 类,下面我们就动手实践一下吧。 先新建一个Windows form的工程,然后加入一转载 2009-07-30 14:20:00 · 294 阅读 · 0 评论 -
C#中的套接字编程
C#是微软随着VS.net新推出的一门语言。它作为一门新兴的语言,有着C++的强健,又有着VB等的RAD特性。而且,微软推出C#主要的目的是为了对抗Sun公司的Java。大家都知道Java语言的强大功能,尤其在网络编程方面。于是,C#在网络编程方面也自然不甘落后于人。本文就向大家介绍一下C#下实现套接字(Sockets)编程的一些基本知识,以期能使大家对此有个大致了解。首先,我向大家介绍一下套接字转载 2009-07-30 14:18:00 · 365 阅读 · 1 评论 -
用C#开发Windows服务监控系统使用
摘要 本文将向你展示如何用C#开发一个Windows服务来记录系统使用情况。 每一个人都想知道他们每天在什么时间启动和关闭自己的系统,以及系统每天运行了多少时间。如果用一个DataGrid控件来显示系统启动、关闭及所消耗的时间将是一个不错的主意。 在本文中,我提供了一种方法来实现这一目标-使用C#开发一个Windows服务。其实,每个人都了解一点Windows服务。但是,为了介绍之目的,我仅转载 2009-07-30 14:16:00 · 408 阅读 · 0 评论 -
浅谈CLR线程池的缺点及解决方法
独立线程池 上次我们在CLR线程池的作用与原理浅析一文中讨论到,在一个.net应用程序中会有一个CLR线程池,可以使用ThreadPool类中的静态方法来使用这个线程池。我们只要使用QueueUserWorkItem方法向线程池中添加任务,线程池就会负责在合适的时候执行它们。我们还讨论了CLR线程池的一些高级特性,例如对线程的最大和最小数量作限制,对线程创建时间作限制以避免突发的大量任务消耗转载 2009-07-30 14:14:00 · 277 阅读 · 0 评论 -
[.NET 基于角色安全性验证] 之四:ASP.NET 2.0 成员资格和角色管理授权
从严格意义上来说,ASP.NET 2.0 的成员资格、角色管理授权和 .NET 角色安全性没有多大关系。只不过,Microsoft 替我们完成了一些原本需要我们自己进行的工作而已。 在这两种新的技术中使用的"提供程序模型"倒是值得我们好好学习一下,因为这个 IoC 概念非常相似。 成员资格 成员资格提供了通用的用户管理功能,诸如注册、登录、找回密码等,加上与之配套的可视化控件,我们“几乎”不用在编转载 2009-07-14 10:38:00 · 310 阅读 · 0 评论 -
[.NET 基于角色安全性验证] 之三:ASP.NET Forms 身份验证
在开发过程中,我们需要做的事情包括: 1. 在 web.config 中设置 Forms 身份验证相关参数。 2. 创建登录页。 登录页中的操作包括: 1. 验证用户名和密码是否正确。 2. 创建身份验证票证对象。 3. 将身份验证票证对象加密成字符串,写入 Cookies。 4. 重定向到原始请求 URL。 1. 简单演示 web.config复制 保存xml version="1转载 2009-07-14 10:38:00 · 372 阅读 · 0 评论 -
[.NET 基于角色安全性验证] 之一:基础知识
NET 基于角色安全性验证的核心是主体(Principal)和标识(Identity)对象,其中主体负责角色或者组的验证,标识对象封装有关正在验证的用户或实体的信息。角色安全性验证通过生成可供当前线程使用的主体信息来支持授权,其中主体用关联的标识进行构造。复制 保存public interface IPrincipal{ // Methods bool I原创 2009-07-14 10:36:00 · 220 阅读 · 0 评论 -
C#+低级Windows API钩子拦截键盘输入
摘要 在家里,婴儿和其它动物可能会重击你的计算机键盘,致使出现各种无法预言的结果。本文中的这个C#示例应用程序将向你展示如何基于Windows钩子API来实现在击键造成任何危害之前捕获它们。 一. 简介 猫和婴儿有很多共同之处。他们都喜欢吃家中养植的植物,都非常讨厌关门。他们也都爱玩弄你的键盘,结果是,你正发送给你的老板的电子邮件可能是以半截句子发送出去的,你的Excel帐户也被加入了一些乱七转载 2009-07-14 10:24:00 · 280 阅读 · 0 评论 -
用C#编写发手机中文短信息Windows服务
最近在电脑城上买了一根NOKIA3210的数据线,玩了几天改LOGO、改铃声后也将数据线扔在一边。直到前几天在Http://oxygensoftware.com上看到有发手机短信息的二次开发控件,才想起多日不用的数据线,而且最近在学C#,觉得用C#做个发短信息的程序也不错,经过多天的测试,终于实现用电脑+数据线+手机的模式,实现在单位的局域网平台上发送短信息了。 由于在单位使用到发手机短信息的转载 2009-07-30 14:20:00 · 241 阅读 · 0 评论 -
用Visual C#实现POP3邮件接收程序
本文通过运用C#来实现一个基于POP3协议的邮件接收程序来向大家展示C#网络编程的功能强大,同时也向大家介绍一下基于POP3协议的电子邮件接收原理。 首先我向大家介绍邮件接收的基本原理: 一开始便是客户端与服务器的连接。不过,在客户端连接到服务器之前,注意把端口设为POP3协议默认的110号。 客户端连接服务器成功后,服务器会返回以下信息: +OK…… 字符+OK是POP3协议的返回信息转载 2009-07-30 14:21:00 · 519 阅读 · 0 评论 -
Hello F#
最近专门抽了一些时间大概了解了一下F#, 对里面的类型定义,事件声明绑定等进行了初步学习,今天的这个DEMO因为时间原因写的比较简单。主要是对使用F#进行开发时的流程做了一个简单的总结。有兴趣的朋友可以帮助补充一下。好了,费话不多说了。 在使用F#开发首先,我们要先去其官方网站下载其最新的CTP版本, 下载链接. 我们只要下载安装相应的InstallFSharp.msi 文件即可。转载 2009-07-30 15:22:00 · 273 阅读 · 0 评论 -
MSDN对于事件定义解释
声明事件事件和方法一样具有签名,签名包括名称和参数列表。事件的签名通过委托类型来定义,例如:C# 复制代码public delegate void TestEventDelegate(object sender, System.EventArgs e);.NET Framework 中事件的签名中,通常第一个参数为引用事件源的原创 2009-06-17 09:54:00 · 353 阅读 · 0 评论 -
C++的事件
C#的事件和Windows窗口编程中提到的“事件”、“消息”、“事件驱动”等在概念上是很类似的。我们在一个窗口上移动鼠标指针,系统就会产生WM_MOUSEMOVE消息(在vb中就是激发mousemove事件),只要我们告诉系统一个函数指针,系统就会通过这个回调函数通知我们,这是Windows窗口编程中的“事件”。C#中的事件的外延更广,任何一个对象都可以拥有事件,客户可以“定制”该对象的事件,当转载 2009-06-17 09:43:00 · 817 阅读 · 0 评论 -
C#事件(event)解析
事件(event),这个词儿对于初学者来说,往往总是显得有些神秘,不易弄懂。而这些东西却往往又是编程中常用且非常重要的东西。 大家都知道windows消息处理机制的重要,其实C#事件就是基于windows消息处理机制的,只是封装的更好,让开发者无须知道底层的消息处理机制,就可以开发出强大的基于事件的应用程序来。 先来看看事件编程有哪些好处。 在以往我们编写这类程序中,往转载 2009-06-17 08:53:00 · 234 阅读 · 0 评论 -
如何在C#中使用 Win32和其他库
这一次我们将深入探讨如何在 C# 中使用 Win32 和其他现有库。 C# 用户经常提出两个问题:“我为什么要另外编写代码来使用内置于 Windows 中的功能?在框架中为什么没有相应的内容可以为我完成这一任务?”当框架小组构建他们的 .NET 部分时,他们评估了为使 .NET 程序员可以使用 Win32 而需要完成的工作,结果发现 Win32 API 集非常庞大。他们没有足够的资源为所有 W转载 2009-06-16 10:02:00 · 169 阅读 · 0 评论 -
C#winform中怎么将程序最小化到系统托盘
1.在form中添加一个NotifyIcon控件 2.把87.ico这个图标放在/bin/Debug目录下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using S原创 2009-06-15 16:02:00 · 186 阅读 · 0 评论 -
在 Visual C# .NET 中跟踪和调试
本文介绍如何使用 Debug 和 Trace 类。Microsoft .NET Framework 中提供了这两个类。在应用程序开发期间或部署到产品后,可以使用这两个类提供有关应用程序性能的信息。这两个类只是 .NET Framework 中所提供配置功能的一部分。 要求下面的列表概括了推荐的硬件、软件、网络结构以及所需的 Service Pack:• Microsoft Windows 2000转载 2009-06-15 15:08:00 · 292 阅读 · 0 评论 -
F#探险之旅(二):函数式编程(上)
函数式编程范式简介 F#主要支持三种编程范式:函数式编程(Functional Programming,FP)、命令式编程(Imperative Programming)和面向对象(Object-Oriented,OO)的编程。回顾它们的历史,FP是最早的一种范式,第一种FP语言是IPL,产生于1955年,大约在Fortran一年之前。第二种FP语言是Lisp,产生于1958,早于Cobol转载 2009-07-30 15:27:00 · 372 阅读 · 0 评论