上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 

 

    

 

本文对应知识领域
用VB6.0制作画图板
作者:哈尔滨 张许国 申领版权
2010年11月15日 共有 1127 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

 

    
Windows中的画笔,恐怕读者不会不知道吧?其绘图功能虽无法与专业的绘图软件相提并论,但也马马虎虎能够应付用户日常制图的需求。其实,利用Visual Basic我们也能开发出如“画笔”一样的软件,甚至比它更完善,更出色。我就此制作一例,希望与各位VB的爱好者们交流VB编程的心得与体会。
    程序界面制作篇。
    一、启动VB,创建一个“VB企业版控件”文件。
    二、添加窗体:一个MDI窗体(MDIPaint)、一个子窗体:绘图操作区(Paintwin)、七个自由窗体,包括一个版本信息窗体(About1)、一个画笔大小调节窗体(BrushSroll)、一个启动界面(Cover)、一个滤镜信息框(Filterwin)、一个帮助窗体(Helpwin)、一个登陆提示框(password)、一个文本输入框(Textpaint)。设置MDIPaint为启动窗体图1。
    三、 在窗体中添加控件
    1. 在MDIPaint窗体中先制作菜单:就像你见到的所有Windows程序一样,包括:文件(新建、打开、清屏、存储、另存为、关闭、打印、退出)、编辑(复制、粘贴等)、变换(垂直、水平、旋转、缩放)、滤镜(浮雕)、工具栏(隐藏、显示)、视图(颜色、字体、画笔、设置桌面)、帮助(版本信息)……并配置快捷键。然后,设置一个通用对话框控件(Commondialog1)、两个图片列表控件(ImageList1&ImageList2)、两个工具栏(Toolbar1&Toolbar2)、一个状态条(StatusBar1)。抓取图标,将常用的工具栏中的图标加入到ImageList1中,制作各种图像代表图标14个加入到ImageList2中,将图片列表控件与工具栏连在一起。在状态条中加入时间、X轴和Y轴坐标显示。完成界面如图2所示。其中,Toolbar1是工具栏,类似于Word中位于菜单栏下的工具栏快捷键,可根据其所含图标属性设定功能。Toolbar2是图像栏,是绘制固定图像的快捷键,有直线、普通矩形、填充圆等,其填充方式均按图标属性设置。
    2. 在Paintwin窗体中,主要包括有两个图片框(Picture1& Pictureback),将Picture1嵌套在Pictureback中以实现能够显示任意尺寸的画面,添加两个滚动条(imagescroll1& imagescroll2)配合察看大尺寸图片。另外,还需要一个标签(forecolor1)显示前景色,一个标签(backcolor1)显示背景色,一个按钮交换前景色与背景色,一个复选框(toolbar2c1)切换MDIPaint中的图像栏与工具栏。完成界面如图2所示。
    3. BrushSroll窗体主要功能是通过滚动条滑动任意调节画笔的大小,包括一个滚动条(BrushHScroll1)、画笔数值显示区(blabel2)及确认、取消按钮。
    4. Cover窗体装入启动画面(施展你的艺术才华吧),启动时间可自行设定。例如:
    技巧篇
    在编程中掌握重要方法,灵活利用技巧,往往能事半功倍。
    一、像“画笔”一样,在绘图区的任意地方输入文本。
    几乎所有的绘图软件都提供了文字输入的功能,有的(如Photoshop)甚至能够做一些简单的文本编辑的工作。此程序也实现了这一特定功能。首先,设置Commondialog1和Picture1关于字体的所有属性,如:“Picture1.FontName = CommonDialog1.FontName”。通常“新手上路”的朋友会遇到:当执行程序时,会出现一个信息框:“控制面板中未安装字体”,解决它必须首先声明两个变量:Screenfonts=&H1、Printerfonts=&H2。并写出如下代码:“CommonDialog1.Flags = Screenfonts + Printerfonts”。同时在VB的属性窗口中设置Flags的值为1。接下来需要完成在Picture1中单击左键的那个位置输入文本这一功能,因此需要得到单击左键处的坐标,即在Picture1_Click()中将startx、satrty的值传给CurrentX、CurrentY。这样,问题就解决了。
    二、灵活运用PaintPicture。
    用PaintPicture方法来实现图像的翻转,比较容易(需要API——StretchBlt的支持)。其语法规则为:object.PaintPicture Picture, x1, y1, width1, height1, x2, y2, width2, height2, (opcode)。只要熟练掌握其中变量的使用,那么图像变换任你选择。
    以下是几个简单变换的例子:
    水平翻转:Picture1.PaintPicture Picture1.Picture, Picture1.ScaleWidth, 0, -1 * Picture1.ScaleWidth, Picture1.ScaleHeight
    垂直翻转:Picture1.PaintPicture Picture1.Picture, 0, Picture1.ScaleHeight, Picture1.ScaleWidth, -1 * Picture1.ScaleHeight
    旋转180度:Picture1.PaintPicture Picture1.Picture, Picture1.ScaleWidth, Picture1.ScaleHeight, -1 * Picture1.ScaleWidth, -1 * Picture1.ScaleHeight
    缩 小:Picture1.PaintPicture Picture1, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, -Picture1.ScaleWidth, -Picture1.ScaleHeight
    放 大:Picture1.PaintPicture Picture1, Picture1.ScaleWidth, Picture1.ScaleHeight, -2 * Picture1.ScaleWidth, -2 * Picture1.ScaleHeight
    三、对Toolbar中某一按键状态的控制。
    通常,需对Toolbar中某一按键进行程序编制:“Select case1 case2 case3 ……” 。
    当需要对一按键的状态进行控制,比如要在某一时刻让第5个按键自动按下,则只需要写出代码:“Toolbar1.Buttons(5).Value = 1”即可。
    四、关于固定图形的绘制。
    “画笔”能够在图纸的任意地方画出直线、虚线、空心圆、实心圆、矩形、多边形等。我在此程序中也加入了这一功能。你看到MDIPaint窗体上那一排(共14个)小图标吗?它们就是为画固定图形而设置的。例如:当我点击任一类型的填充圆后,在Picture1中左键按下的坐标会被记录下来:startx、starty。然后按住左键移动鼠标,这时程序会监测左键的状态,一旦左键松开,便将此时新的坐标值写入endx及endy。程序又转到绘图函数中,以(startx,starty)为圆心,以(sqr((startx-endx)^2+(starty-endy)^2))为半径,以预先设定的填充状态(FillStyle)及颜色(如前景色)画出一个你所希望得到的填充圆。其它固定图形的绘制方法皆大同小异。
    五、借用API函数。
    是不是还有许多用VB无法实现的功能?让API函数帮帮忙吧!查查你的API文本浏览器就可以了。建议你看看Visual C++,不过很可能你以后就不会用 VB写程序了。
    代码篇
    (限于篇幅,只列出比较重要的部分源代码)
    一、文本输入:
    '弹出字体对话框
    If MDIPaint.Toolbar1.Buttons(11).Value = tbrPressed Then
    '调用对话框弹出字
相关新闻

您可能对这些感兴趣  

用VB做定时断线程序
VisualBasic中的界面设计原则和编程技巧
VB6.0与Windows API 间的呼叫技巧
制作可以自动隐藏的弹出式菜单
ListBox中的字符串超长显示的解决方法
VB中的Unicode 和 Ansi 格式
优化程序显示速度
Visual Basic 产生渐层的 Form 背景
用VB实现客户——服务器(TCP/IP)
用VB制作注册软件的方法

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》