⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 9935.txt

📁 关于编程技术技巧的文章
💻 TXT
📖 第 1 页 / 共 4 页
字号:
================================================================

                           《编 程 技 术》

                 一份属于广大编程爱好者的电子杂志

               这是一份完全关于探讨编程的免费电子杂志
               您可以任意传播本刊,但必须保持它的完整
              本刊承诺绝不向订户发送任何形式的垃圾邮件!
================================================================
              第35期 99/12/5          本期发送数: 6258  
================================================================

◆本期栏目◆
 *刊首语*
 *特别推荐*
    【编程爱好者讨论组】
    【终·极·指·南】免费电脑网络杂志
 *网友作品*
    码码通1.00
    Mento Awaker 1.13(萌图提醒器)
    挑战者II(小游戏)
 *技术文档*
    在Delphi中控制扫描仪
    Delphi易混淆的概念
    在Visual C++中透明浮动按键的实现
    用Visual Basic与MS-Draw开发通用作图软件
    ASP页面内VBScript和JScript的交互 
 *下载专区*
    4个ActiveX控件下载
 *有问必答*

****************************************************************
****************************************************************

◆特别推荐◆
    
【编程爱好者讨论组】

订阅方法:Email方式进行订阅
订阅:发一封email到 programmerfan-request@list.bentium.net
      在正文里填subscribe。然后您会收到一封确认信,只要再回复这
      封确认信就正式加入了了。
退订:操作方法同上,在正文里填unsubscribe。
    
    当您完成了上面的订阅步骤后,您就已经加入了本讨论组邮件列表,
可以通过Email参加讨论了!您只要向地址 programmerfan@list.bentium.net
发送信件,该邮件列表的订阅者都会收到您发出的信件。这样,订阅者之
间就可以互相交流了。
    本邮件列表是为大家讨论编程的问题而设立的。由于您所发的信件所
有的订阅者都能收到,所以请您务必为别的订阅者着想,千万不要发垃圾
邮件或者是长度很长但又无用的信件。谢谢您的合作。 


【终·极·指·南】免费电脑网络杂志
 刊物介绍:
【IT新闻】:搜索IT界重大新闻。
【复活节彩蛋】:向你介绍各种软件、电影及游戏等鲜为人知的小秘密。 
【技巧园地】:奉送流行软件的使用技巧。 
【工具锦囊】:向你介绍最新的好用的软件。 
【网络快递】:各种免费资源快速提供。 
【交流天地】:提供完全自由的主页介绍、交友、问答的空间。   
 本刊物订阅方法:
 在线订阅:
 http://ponlines.my169.com/ 或 http://rondec.126.com/
 E-MAIL订阅:
 majordomo@ms1.e-lists.com.cn 正文为subscribe ultimateguide

****************************************************************
****************************************************************

◆网友作品◆

012.
名称:<<码码通>>
版本:1.00
作者:林建克
Email: jancelin@263.net
主页: http://jance.363.net
运行平台: Windows3X&Windows9X
性质:免费软件
下载地址: http://goldengulf.swatou.com/jance/cm100.zip (147KB)
功能简介:
苍鹰工作室第一个公开发布的软件。
<<码码通>>是一个多内码识别软件。功能如下:
1.可识别ASCII、GB、BIG5三种内码。
2.可以多内码的同屏识别和显示。
3.还有一点点小功能。
喜欢多内码识别软件的朋友不妨试用一下本软件;还有如果
您对软件有什么好的建议或设想,请给我写信喔!

011.
Mento Awaker 1.13(萌图提醒器)  
作者:陈宝利
Email: cbl@trigold.cngb.com
下载地址: http://person.zj.cninfo.net/~yao/download/awaker.zip
软件介绍:
定时提醒,该软件有如下特点:
1.能将图标缩小到“开始”菜单栏的状态条内
2.定时自动排序功能
3.采用对注册表的编程,使用更加可靠
4.能自动记忆上次启动的状态,并于下次启动时还原
5.能判断是否已经运行,自动避免运行多个拷贝
6.能采用时间标题和日期标题,且界面更加美观

010.
1.名 称:挑战者II(小游戏) (VB 6.0 开发)
2.连接地址:http://topgold.163.net/game1.zip 
作者邮箱: coolblue@china.com
作者主页: http://topgold.163.net               

****************************************************************
****************************************************************

◆技术文档◆

                    在Delphi中控制扫描仪 

                   天津师范大学   曹进军
 
---- 在利用Delphi开发信息管理系统时,常常要处理图象,这也是信息
管理系统发展的必然趋势。怎样在Delphi中通过扫描仪获得所需的图象
信息呢?不外乎有三种基本的方法: 
通过图象处理软件,比如说Photoshop等,通过它们的扫描图象的功能,
加工成一定格式的图象后再在自己的系统中利用; 

通过扫描仪接口Twain.DLL 。该接口是在安装扫描仪时提供的,它实际
上是一个Plugin插件,它通过一系列函数来控制扫描仪; 

通过构件技术来控制扫描仪。 
---- 利用第一种方法能减少编程的复杂度,但是系统的集成度不高,
用户使用上也不方便;第二种方法能在驱动程序级直接控制扫描仪,能
在编程上提供最大的灵活性和可控性;第三种方法能充分利用Delphi的
可视化构件技术,安全、灵活、自由地利用扫描仪。其实第三种方法也
是建立在扫描仪接口Twain.DLL之上的。本文论述的方法就采用第三种。 
---- Windows9X在其附件中提供了“映象”可选件,该附件是采用OCX构
件来控制扫描仪的,共有imgEdit、imgAnntool、imgScan、imgAdmin 四
个,有这四个构件基本上就能完全控制扫描仪。在Delphi中的用法如下: 
在Windows9x中选择安装“映象”。(在控制面板中选择“添加/删除程
序”,再选择“安装Windows”,点击“附件”复选框,然后从“详细资
料”按钮中可以找到“映象”) 

启动Delphi,选择“Component”菜单项下的“Import ActiveX Control”,
这时可以看到列表中有“Wang 图象编辑控制、Wang 图象扫描控制、Wang
图象管理控制、Wang 图象缩略图控制”,选中这四项,然后点击“Install”
按钮,这时在构件面板上的ActiveX舌标下就可以看到这四个构件的图标。 
---- ImgScan 的主要属性:FileType:图象的文件类型(该构件支持三
种:TIFF,BMP,AWD); 

ScanTo:返回或设置被扫描图象的目的;
可取值            含义        
0  (缺省)     显示被扫描的图象.
1	         显示被扫描的图象并写入一个文件.
2	         把图象写入一个文件
3	         以模板方式把图象写入文件并显示.
4	.        以模板方式把图象写入文件
5	         传真被扫描的图象
注意:如果取缺省值0,
必须和 Wang ImgEdit 构件配合使用。
 DestImageControl:Wang ImgEdit构件名;
Zoom:图象的放缩比例

ImgScan 的主要方法:OpenScanner :打开扫描仪;
CloseScanner :关闭扫描仪; 
StartScan : 开始扫描;
StopScan :  停止扫描


---- ImgEdit 的属性主要是控制扫描图象的分辨率、图象的宽高、是否
允许对图象进行局部选 择等;其方法主要有拷贝、剪切图象到粘贴板,
从粘贴板复制图象,旋转、放缩、 镜象图象;打印、保存、刷新图象等。 
---- 关于上述四个OCX构件的详细使用说明可在Delphi中查看其自带的
帮助系统。 
---- 下面是使用这两个构件的一些例子: 

procedure Tscanf.N1Click(Sender: TObject);
begin
ImgScan1.ShowSelectScanner;  
//选择系统中已安装的扫描仪
end;

procedure Tscanf.N2Click(Sender: TObject);
begin
    imgedit1.zoom:=100;  //设置图象的放缩因子
    if  not imgscan1.ScannerAvailable then 
  //如果选择的扫描仪不可用
       imgscan1.OpenScanner;//打开扫描仪
       imgscan1.StartScan; //开始扫描图象
       imgscan1.CloseScanner; //关闭扫描仪
end;


procedure Tscanf.N8Click(Sender: TObject);
begin
if (imgedit1.IsClipboardDataAvailable 
and imgedit1.ImageDisplayed ) then
   imgedit1.ClipboardPaste(selleft,seltop);
//从剪贴板粘贴图象,其参数为Imgedit的显示区域的起始坐标
end;

procedure Tscanf.N1801Click(Sender: TObject);
begin
 if imgedit1.ImageDisplayed then
   imgedit1.Flip;        //镜象图象
 end;

procedure Tscanf.N901Click(Sender: TObject);
begin
if imgedit1.ImageDisplayed then
imgedit1.RotateRight    //向右旋转图象
end;
procedure Tscanf.N6Click(Sender: TObject);
begin
 imgedit1.DrawSelectionRect(selleft,
seltop,selwidth,selheight);//进行图象局部选择
 imgedit1.ClipboardCut(selleft,seltop,
selwidth,selheight);//剪切所选区域
end;


---- 注意:在DELPHI中使用Imgedit构件的拷贝和剪切功能时,会出现
以下问题: 
---- 1、 如果把整幅图象都选中,没有任何问题; 
---- 2、 如果选择了局部区域,则拷贝和剪切的区域会发生漂移; 
---- 3、 如果DELPHI做的是MS SQL后端数据库的客户端界面,那么在把
图象内容写入数据库的图象字段中时,BDE(数据库引擎)会报错。这是
DELPHI3。0和4。0的BUG,4。0的升级包可以解决这个问题。 
---- 至于第二个问题,可这样解决:在Imgedit的onSelectionRectDrawn
事件中写一段代码,把选择区域的边界值保存到四个全局变量中,在拷贝
和剪切之前用先前保存的变量再进行一次选择即可(当然,这一切都在后
台进行的,见前面的例子)。 
---- 开发环境:DELPHI4。0,HP ScanJet 4P扫描仪; 

---- 附源代码。
unit scanu;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, 
  Forms, Dialogs, Menus, ScanLib_TLB, ExtCtrls, AxCtrls, 
  OleCtrls, ImgeditLib_TLB;

type
  Tscanf = class(TForm)
    MainMenu1: TMainMenu;
    F1: TMenuItem;
    N15: TMenuItem;
    N1: TMenuItem;
    N2: TMenuItem;
    N16: TMenuItem;
    N11: TMenuItem;
    N5: TMenuItem;
    C1: TMenuItem;
    N4: TMenuItem;
    E1: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N3: TMenuItem;
    N10: TMenuItem;
    N9: TMenuItem;
    N1801: TMenuItem;
    N901: TMenuItem;
    N902: TMenuItem;
    H1: TMenuItem;
    N12: TMenuItem;
    N13: TMenuItem;
    ImgEdit1: TImgEdit;
    Bevel1: TBevel;
    ImgScan1: TImgScan;
    Bevel2: TBevel;
    procedure N4Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure C1Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure N1801Click(Sender: TObject);
    procedure N901Click(Sender: TObject);
    procedure N902Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure ImgEdit1SelectionRectDrawn(Sender: TObject; Left,Top, 
      Width, Height: Integer);
    procedure N11Click(Sender: TObject);
  private
    { Private declarations }
  public
   selleft,seltop,selwidth,selheight:integer;
    { Public declarations }
  end;
var
  scanf: Tscanf;

implementation

{$R *.DFM}

procedure Tscanf.N4Click(Sender: TObject);
begin
imgedit1.ClearDisplay;
close;
end;

procedure Tscanf.N1Click(Sender: TObject);
begin
ImgScan1.ShowSelectScanner;
end;

procedure Tscanf.N2Click(Sender: TObject);
begin
 imgedit1.zoom:=100;
    if not imgscan1.ScannerAvailable then
       imgscan1.OpenScanner;
       imgscan1.StartScan;
       imgscan1.CloseScanner;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -