首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    在ASP.NET中随意创建图形信息

    如果没有一个外部组件的支持,在ASP中是不能动态创建图形的,不管它是一个图表,一个横幅或仅仅是一个图形计数器。可喜的是,这一点在ASP.NET中改变了。现在,我们只需要使用内置功能,就能够很容易动态创建图形,并向客户端发送具有最佳配置的图形。   用命令行程序创建图形   在讨论一大堆ASP.NET代码之前,我们先执行一个简单的命令行程序做一个测试,然后使用这些源代码作为 ASP.NET 脚本的基础。实际上,两者的区别在于:命令行程序将图形保存在一个文件中,而ASP.NET 脚本将图形直接发送到客户端。   举例的程序做什么呢?按照惯例,我们从众所周知的"Hello World" 程序开始,把这个文本信息输出到一个图形文件中,这个图形的大小要与当前选中的 "Hello World" 文本的字体和字号完全相同。   下面的脚本pagecounter.cs是一个典型的简单命令行程序:如果忽略包围在其周围的必须的类代码,就只剩下程序运行时要调用的主函数了,这也正是生成图形的代码所在处:   using System;   using System.IO;   using System.Drawing;   using System.Drawing.Imaging;   public class CTestBitmapFunctionality   {   public static void Main()   {   Bitmap newBitmap = null;   Graphics g = null ;   try   {   Font fontCounter = new Font("Lucida Sans Unicode", 12);   // calculate size of the string.   newBitmap = new Bitmap(1,1,PixelFormat.Format32bppARGB);   g = Graphics.FromImage(newBitmap);   SizeF stringSize = g.MeasureString("Hello World", fontCounter);   int nWidth = (int)stringSize.Width;   int nHeight = (int)stringSize.Height;   g.Dispose();   newBitmap.Dispose();   newBitmap = new Bitmap(nWidth,nHeight,PixelFormat.Format32bppARGB);   g = Graphics.FromImage(newBitmap);   g.FillRectangle(new SolidBrush(Color.White),   new Rectangle(0,0,nWidth,nHeight));   g.DrawString("Hello World", fontCounter,   new SolidBrush(Color.Black), 0, 0);   newBitmap.Save("c://test.png", ImageFormat.PNG);   }   catch (Exception e)   {   Console.WriteLine(e.ToString());   }   finally   {   if (null != g) g.Dispose();   if (null != newBitmap) newBitmap.Dispose();   }   }   }   在任何情况下,执行上面代码后,就会生成下面的图形test.png,它将存放在C驱动器上:   我们来仔细研究一下源代码,看看这个图形是如何创建的。关键一点是生成的图形必须与文本 "Hello World" 的字体和字号相同。因此,首先要计算文本的尺寸,为此我们使用了一个尺寸为1 x 1的虚拟图形。计算结束之后,再废弃这个虚拟图形并生成一个适当尺寸的图形。   源代码中有一点很有趣,这就是 Graphics 对象。要创建一个位图时,用这个对象做什么呢?奥妙在于:这是可以向其中绘图的上下文环境。我们可以在屏幕上、打印机上和内存中使用一个图形上下文环境,准确地说就是一个位图。图形的上下文环境使我们能够在任何设备上进行绘图操作,甚至是在虚拟设备上。   接着,用DrawString将文本 "Hello World"按照规格输出到一个白色背景的矩形(用 FillRectangle创建的)中。图形完成后,将其保存在磁盘上。凡是亲自研究过图形文件格式的人都知道这有多困难,但是使用 GDI+

    02

    配置更安全的服务器Windows 2003 Server

    步骤 ==================================================================================== 注意:安装和配置 Windows Server 2003。 1. 将\System32\cmd.exe转移到其他目录或更名; 2. 系统帐号尽量少,更改默认帐户名(如Administrator)和描述,密码尽量复杂; 3. 拒绝通过网络访问该计算机(匿名登录;内置管理员帐户;Support_388945a0;Guest;所有非操作系统服务帐户) 4. 建议对一般用户只给予读取权限,而只给管理员和System以完全控制权限,但这样做有可能使某些正常的脚本程序不能执行,或者某些需要写的操作不能完成,这时需要对这些文件所在的文件夹权限进行更改,建议在做更改前先在测试机器上作测试,然后慎重更改。 5. NTFS文件权限设定(注意文件的权限优先级别比文件夹的权限高): 文件类型 建议的 NTFS 权限 CGI 文件(.exe、.dll、.cmd、.pl) 脚本文件 (.asp) 包含文件(.inc、.shtm、.shtml) 静态内容(.txt、.gif、.jpg、.htm、.html) Everyone(执行) Administrators(完全控制) System(完全控制) 6. 禁止C$、D$一类的缺省共享 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters AutoShareServer、REG_DWORD、0x0 7. 禁止ADMIN$缺省共享 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters AutoShareWks、REG_DWORD、0x0 8. 限制IPC$缺省共享 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa restrictanonymous REG_DWORD 0x0 缺省 0x1 匿名用户无法列举本机用户列表 0x2 匿名用户无法连接本机IPC$共享 说明:不建议使用2,否则可能会造成你的一些服务无法启动,如SQL Server 9. 仅给用户真正需要的权限,权限的最小化原则是安全的重要保障 10. 在本地安全策略->审核策略中打开相应的审核,推荐的审核是: 账户管理 成功 失败 登录事件 成功 失败 对象访问 失败 策略更改 成功 失败 特权使用 失败 系统事件 成功 失败 目录服务访问 失败 账户登录事件 成功 失败 审核项目少的缺点是万一你想看发现没有记录那就一点都没辙;审核项目太多不仅会占用系统资源而且会导致你根本没空去看,这样就失去了审核的意义。 与之相关的是: 在账户策略->密码策略中设定: 密码复杂性要求 启用 密码长度最小值 6位 强制密码历史 5次 最长存留期 30天 在账户策略->账户锁定策略中设定: 账户锁定 3次错误登录 锁定时间 20分钟 复位锁定计数 20分钟 11. 在Terminal Service Configration(远程服务配置)-权限-高级中配置安全审核,一般来说只要记录登录、注销事件就可以了。 12. 解除NetBios与TCP/IP协议的绑定 控制面版——网络——绑定——NetBios接口——禁用 2000:控制面版——网络和拨号连接——本地网络——属性——TCP/IP——属性——高级——WINS——禁用TCP/IP上的NETBIOS 13. 在网络连接的协议里启用TCP/IP筛选,仅开放必要的端口(如80) 14. 通过更改注册表Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous = 1来禁止139空连接 15. 修改数据包的生存时间(TTL)值 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters DefaultTTL REG_DWORD 0-0xff(0-255 十进制,默认值128) 16. 防止SYN洪水攻击 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters SynAttackProtect REG_DWORD 0x2(默认值为0x0) 17. 禁止响应ICMP路由通告报文 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters \Interfaces\interfa

    03

    ASP.NET服务器控件与客户端控件OnClientClick和OnClick的用法比较

    <head runat="server">     <title>无标题页</title>     <script language="javascript">     function check()     {            var email = document.getElementById('TextBox1');         var pwd = document.getElementById('TextBox2');         if  (email.value=="" || pwd.value=="")         {             alert("请填写完整内容");             return false;         }         else         {             var mailStr = /(("w)+)@(("w)+).[cc|com|net|org|tv|cn]/ig;             if (!mailStr.exec(email.value))             {                 alert('Email地址书写不正确!"n请您重新输入!');                 email.value = '';                 email.focus();                 return false;             }                     }            }     </script> </head> <body>     <form id="form1" runat="server">    

    领券