[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
今天上网逛,看到一个vbscom非常好。这是一个画图组件。生成的图像非常漂亮。
组件名叫shotgraph,下载地此为http://aspxhome.com/article/uplo ... 200792612313895.rar
给出一个生成gif的程序:
  1. set obj=CreateObject("shotgraph.image")
  2. size=201
  3. 'Calling the CreateImage method
  4. obj.CreateImage size,size,4
  5. '4是指图像中要用到4种颜色,颜色按编号引用
  6. obj.SetColor 0,255,255,255
  7. obj.SetColor 1,0,0,0
  8. obj.SetColor 2,255,108,0
  9. obj.SetColor 3,0,0,204
  10. '0~3代表颜色编号,后面的三个数字是rgh数。
  11. obj.SetBgColor 0
  12. obj.FillRect 0,0,size-1,size-1
  13. '画正方形,填充色是编号为0的颜色,后面的是对角线坐标。程序有错误,颜色编号只能从1开始,不能用0,后面的语句和这句一样的道理。
  14. obj.SetDrawColor 1
  15. 'Drawing the line
  16. obj.Line size-1,0,0,size-1
  17. 'Color 2 will be used for filling
  18. obj.SetBgColor 2
  19. 'Draw the big circle
  20. obj.Ellipse 5,5,size-6,size-6
  21. 'Color 2 will be used for filling
  22. obj.SetBgColor 3
  23. 'Draw the small circle
  24. obj.Ellipse 5,(size-5)/4,size/2,(size-5)*3/4
  25. 'Create the image file named test.gif
  26. obj.GifImage 0,1,"test.gif" '图片可以保持为一切windows图片,包括swf文件也可以。
复制代码
上面的代码生成的图片如下:有了这个画图组件,利用vbs画函数的图像的问题就解决了。利用这个com去生成图片,用windows图片查看器去
不断的显示图片,真的在vbs里面画图很完美了。shotgraph很小,小到安装时你都不没感觉。

最大的遗憾是图片的长宽受限制。其它的都非常好。


===========上面的语句有问题==下面的为正确的===========================
  1. set obj=createobject("shotgraph.image")
  2. obj.createimage 300,200,3
  3. obj.setcolor 1,0,255,0
  4. obj.setcolor 2,0,0,255
  5. obj.setbgcolor 1
  6. obj.fillrect 0,0,300,200
  7. obj.setdrawcolor 2
  8. obj.line 0,0,200,200
  9. obj.gifimage 0,1,"test.gif"
复制代码
==================================运动的直线
  1. set oshell=createobject("wscript.shell")
  2. set obj=createobject("shotgraph.image")
  3. obj.createimage 300,200,3
  4. obj.setcolor 1,0,255,0
  5. for i=0 to 20
  6. obj.setdrawcolor 1
  7. obj.line i,i,400-i*i,i*i  '改为 obj.line i,i,i,i 就是点
  8. obj.gifimage 0,1,"test.gif"
  9. wscript.sleep 500
  10. oshell.run "test.gif"
  11. next
复制代码
要申请金山快盘的 请点我的邀请链接,我也好到金上去弄2分。谢谢支持哦。
要请链接为     推荐金山快盘,5.6G的免费空间,可以存照片、文档等,可以自动同步快盘里的文件,在哪都能编辑使用,不怕硬盘损坏,系统崩溃,电脑丢失,病毒破坏等,文件永不丢失的网络硬盘!非常喜欢!      点击下面的的地址立即试用:   http://k.wps.cn/register/?invite=dbkvsx
=====================动态的画抛物线, 特别注意,支持小数步长,如step 0.05
  1. set oshell=createobject("wscript.shell")
  2. set obj=createobject("shotgraph.image")
  3. obj.createimage 300,200,3
  4. obj.setcolor 1,0,255,0
  5. for i=0 to 100
  6. obj.setbgcolor 1
  7. obj.fillrect i,i^2*0.02,i+1,i^2*0.02+1
  8. obj.gifimage 0,1,"test.gif"
  9. wscript.sleep 500
  10. oshell.run "test.gif"
  11. next
复制代码
1

评分人数

TOP

本帖最后由 wc726842270 于 2011-4-1 00:27 编辑

一始看以为颜色的模式是CMYK,但细看却不是。不过问一下题外话,RGH这个H代表什么啊
PS:“'4是指图像中要用到4种颜色,颜色按编号引用”有些不理解,它不是按照RGB的规则么?为什么要指定4种呢。RGB再通过色阶不可以达到一般的要求么(有点跑题了,呵呵),运行了一下很有意思。
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

17# wc726842270
我那天有时间时,我更新一下,给出点简单清楚的实例。
对了,你问的4色,是指你的图片中要用的4色。
rgb的r是red,g是green,b是blue。

TOP

本帖最后由 myzam 于 2011-4-1 21:06 编辑

shotgraph图像组件的用法,
   
1--create image object
   set oimg=createobject("shotgraph.image")
2--image对象的方法
   createimage 方法:   oimg.createimage(size1,size2,num)
   设置要创建的图片文件的尺寸大小为size1 x size2,size1<=320,size<=240.
   大于这个数的按这320或240计算。
   num设置要创建的图片文件里要使用的颜色个数,这里是颜色个数可以认为的指定,如你的图片要用5个颜色就指定5个,这5个颜色是你配置好的颜色,不要错误的理解为是5个基本的色素。每个颜色通个方法
   setcolor定义。
  
   gifimage 方法:oimg.gifimage bgcolor,forcolor,path
   path表示创建的图片文件要存放的路径。保存的图片格式是一切windows图片格式包含swf也可以。
   bgcolor背景色,取逻辑值,这里是比较宽松的
   非0等价于true,0等价于false。
   如:set oimg=createobject("shotgraph.image")
           t=oimg.createimage (200,200,3)

           oimg.setcolor 0,255,255,200

           oimg.gifimage 1,0,"test.gif"
           背景是通过setcolor 0来定义的,必须是0
           要应用背景gifimage必须是是1,*
           要屏蔽背景色必须是0,*。你也可以直接使用 vb常数true,false。
    绘制线方法: line x,y,x+h,y+k
                 x,y代表对角线起点坐标,h,k代表长,宽。
    绘制点的方法:line x,y,x,y
    绘制椭圆和园的方法:ellipse x,y,x+h,y+k
    绘制正方形的方法:fillrect x,y,x+h,y+k
    填色的方法
    绘制线,点时,设置颜色的方法是 setdrawcolor num
    num 为setcolor定义的颜色编号。
    绘制圆,椭圆时,设置颜色的方法是 setbgcolor num
    num的含义同上。
    setcolor定义颜色的方法:setcolor num ,red,green,blue
    num为颜色编号,0分配给图片背景使用。1,2,...分配给点,线,椭圆,圆,长方形使用。

  既然我说的是方法,请注意方法的用法是 oimg.method. 它们不是函数是方法!
  如果你要去返回值就这么用 t=oimg.method () .
  再次提醒注意:未注册版本生成的图片大小为320x240,能不能突破这个限制,网上说注册就行,
经过我试验不必要,你只要把图片保存为swf格式就可以了。
看实例:
  1. set oshell=createobject("wscript.shell")
  2. set oimg=createobject("shotgraph.image")
  3. x=200
  4. y=200
  5. oimg.createimage x,y,8
  6. oimg.setcolor 0,255,100,12
  7. oimg.setcolor 1,125,0,0
  8. oimg.setdrawcolor 1
  9. oimg.line 50,50,100,100
  10. oimg.gifimage 1,0,"test.swf"
  11. oshell.run "test.swf",3
复制代码
利用循环语句把步长设置为小数,将得到高精度图像。

TOP

本帖最后由 wc726842270 于 2011-4-1 20:58 编辑

是好,这样也可以画出函数图像了。不过中心点好像有些不太好掌握
PS:1L的“转帖 值得一看的vbs文章”很给力。不过现在正看脚本之家的“VBS揭密".在此也推荐一下吧(不过主要是HTML的)
http://www.jb51.net/books/16580.html
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

本帖最后由 myzam 于 2011-4-1 21:08 编辑

20# wc726842270

好掌握啊。比如你的图片大小是200x100,你的图片是矩形框。从左上角开始的坐标为0,0,左下角的坐标就是200,100.
我把你推荐的书下来看看。

TOP

不好意思,刚才没转过来弯来,有点心事,
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

本帖最后由 myzam 于 2011-4-2 22:00 编辑

估计是。呵呵。
对了,这个控件还可以创建文字
  1. set oshell=createobject("wscript.shell")
  2. set oimg=createobject("shotgraph.image")
  3. x=200
  4. y=200
  5. oimg.createimage x,y,8
  6. oimg.setcolor 0,255,100,12
  7. oimg.setcolor 1,125,0,0
  8. oimg.setcolor 2,255,255,200
  9. oimg.fontsmoothing=2
  10. oimg.textout 50,100,"hello world hello world"
  11. oimg.gifimage 1,95,"test.swf"
  12. oshell.run "test.swf",3
复制代码
创建字体画的语法(保存为swf,这样可以突破尺寸大小为320x240的限制):
  1. set oshell=createobject("wscript.shell")
  2. set oimg=createobject("shotgraph.image")
  3. x=800
  4. y=600
  5. oimg.createimage x,y,8
  6. oimg.setcolor 0,255,100,12
  7. oimg.setcolor 1,125,0,0
  8. oimg.setcolor 2,255,255,200
  9. oimg.createfont "Arial",50,72,100,false,false,false,false
  10. oimg.textout 10,20,"hello"
  11. oimg.gifimage 10,0,"test.swf"
  12. oshell.run "test.swf",3
复制代码
语法:
1--设置字体属性 ,line取逻辑值,这里的逻辑值比较松,true为非0,false为0
oimg.createfont "font-family",charactorset,size,rotation,line1,line2,line3,line4
2--字体位置:
oimg.textout  leftposition,topposition,"text,text can be chinese"
3--字体颜色
   由oimg.setcolor num,red,green,blue 定义颜色
   由oimg.settextcolor num 把编号为num的颜色应用到字体上。
完整的语法为:createFont sFamily, nCharset, nHeight, nAngle, bBold, bItalic, bUnderline, bStrikeOut [,bUnicode]

TOP

虽然我没学过任何编程语言,但我也会写不太复杂的vbs脚本,觉得一本《Windows脚本技术(script56.chm)》足以走遍天下。虽然对VB/VBScript语言怎么不理解,但根据手册里中的例子照葫芦画瓢也能解决大多数常见问题。关键是对手册里函数的功能和用法还有例子要熟,要经常看。不懂没关系,关键是要知道一个函数能实现什么功能、怎么使用、要什么参数、得到什么结果。

所以在我看来getref、脚本部件什么的,都是无意义的东西。可能是很强大,但对我来说几乎用不上,估计大多数人也一样,而且创建脚本部件并好像不能产生新的用法,还是对基本vbs功能的组合。我觉得了解wsf文件也比这些强。

至于楼主鼓吹的hta,本质就是HTML,要想学hta当今世界上几乎没有资料,为什么?因为学HTML、CSS、DOM就行了,不要本末倒置。只是hta用于本地运行,由mshta解释,并多了一个<hta>标签及相应功能。

要了解其他COM对象,最好的手册是MSDN

----以上内容多数是向zqz0012005版主学习的,他是我的vbs入门老师

TOP

本帖最后由 myzam 于 2011-4-1 22:43 编辑

你说的一点都没错。
对我来说我就只关心画函数图象。其它的对我用处都不大。我看其它的只是了解它吧了。说真的要说方便把vb一架就解决问题了。用不了这么繁杂的。
html那东东是看不会的。建个网站,在用中才能学会。
vbs手册就算看一万次,还是学不会vbs的,除非去用。
就像看不会数学一样,你就算把数学书看破了,也学不会数学的,不是吗?学数学我们都知道要学习数学的各个分支,如果对数学分析感兴趣,就只学习数学分析,而对射影几何一点都不了解那是不行的,要想学习数学,出了做数学题外,不会有更好的方法。
所以学校vbs不在全局上对vbs做个大概的了解,我觉得是不行的。学习脚本部件,学习hta,
其实就是从不同的角度去了解vbs。最后是各人取自己感兴趣的去学习。

TOP

我没打算学VB/VBScript语言本身(因为我不懂编程),我的目的是会写VBS脚本,会使用常用函数和对象。
VBS我不了解,但我对VBS提供的函数大多数都知道用法,对系统提供的常用对象如WScript、WScript.Shell、WScript.NetWork、Scripting.FileSystemObject、Scripting.Dictionary、正则表达式、InternetExplorer.Application、Adodb.Stream等都会用。我觉得学vbs会这些东西就够了。

TOP

让字体动态的旋转一周
  1. set oshell=createobject("wscript.shell")
  2. set oimg=createobject("shotgraph.image")
  3. x=320
  4. y=240
  5. oimg.createimage x,y,3
  6. oimg.setcolor 0,100,255,0
  7. oimg.setcolor 1,0,0,200
  8. oimg.setcolor 2,255,0,0
  9. oimg.settextcolor 2
  10. for i=0 to 40
  11. oimg.createfont "arial",0,48,90*i,false,false,false,false
  12. oimg.textout 100,100,"hello"
  13. oimg.gifimage true,95,"test.gif"
  14. oshell.run "test.gif" ,1
  15. wscript.sleep 1000
  16. next
复制代码

TOP

shotgraph可以直接生成gif动画
看实例:
  1. set s=createobject("wscript.shell")
  2. set obj=CreateObject("shotgraph.image")
  3. xsize=320
  4. ysize=240
  5. frames=9
  6. obj.CreateImage xsize,ysize,4
  7. obj.SetColor 0,0,255,51
  8. obj.SetColor 1,0,0,0
  9. obj.SetColor 2,255,0,0
  10. obj.createpen "PS_SOLID",4,2
  11. for i=1 to 50
  12. obj.TrackAdd true,10,10,0,0,150,100,30
  13. obj.rEctangle i+10,i+10,i+30,i+30
  14. next
  15. obj.trackplay "test.gif"
  16. s.run "test.gif"
复制代码
说明:要生存动画就要用到方法:trackadd,trackplay
语法如下:
trackadd  transparent,x,y,x1,y1,width,height,dispose
参数trasparent背景是否透明,取逻辑值
    x--top-left,y--top-up
     x,y与width,height配合就是设置出动画演示的长方形区域
   x1,y1是指在上面设置的动画区域内frame(帧)的坐标,当然
   x1---还是是left-top,y1--left-up
     注意x,y和x1,y1计算坐标的起点是不同的。
   x,y的计算是基于图片的左上角开始计算的,
   而x1,y1是基于动画区域开始计算的。
   你运行我给出的实例记清楚了。
trackplay  path
    保存你生存的动画图片
shotgraph 太好用了,极力推荐给玩家
下面是这段程序生存的动画图片,由于没有付费,所以你看到的动画只是运动了一次,
要再次看到运动,你刷新网页就可以了。

TOP

本帖最后由 myzam 于 2011-4-8 19:43 编辑

   shotgraph图像组件的语法
   终于把方法处理完了。现在贴出来,共享。myzam 2011-4-2
    提醒:要完整的使用这里的方法,请创建画布。obj.fillrect 。。。。
   没有画布的图片,背景是一个黑粑粑。而且下面的关于透明的属性,将不起作用。
   参数是标准的vbs命名方法。如字符串就是s开头,布尔值就是b开头etc。下面的方法我将抽时间逐以注解。

   shotgraph是以矩形为基础进行构图的。确定矩形大小的方法有两种:
   通常是用对角线端点坐标确定大小,但是有的地方是用对角线的左上端点和,长,宽来确定大小的。  
---方法部分----------------------

动画:
1--定义帧
TrackAdd iTransp,iXDecl,iYDecl,iX,iY,iWidth,iHeight,iTime [,sDisp]

说明:oimg.trackadd true,0,0,10,10,50,40
         就是创建一帧,该帧的长方形对角线坐标为:0,0,0+50,0+40
         然后在帧上放一个元件,元件所在的长方形的lefttop坐标为10,10,当然这个元件的最大范围是10,10,10+50,10+40
         也就是说元件超出帧后将不显示超出的部分。true逻辑值,到表要背景色,false就表示不要背景色。shotgraph的逻辑值
         比较松散,非零的数等价于true,零等价于false。这点和vbs不同。在vbs中true总是严格的=-1,false=0.
         最后一个参数,sdisp是可选的,用处不大,约去。

2--保存动画TrackPlay sFileName [,iBgColor]
说明:把你做的动画存盘。sfilename就是路径。如 oimg.trackplay "f:\test.gif"
         如果你用gifimge,jepgimage存盘,则动画将不动。

3--椭圆弧arc
Arc nLeftRect, nTopRect, nRightRect, nBottomRect, nXStartArc, nYStartArc, nXEndArc, nYEndArc
说明:arc画的是椭圆弧(含圆弧),参数nleftrect,ntoprect,nright,nbottomrect确定矩形的内切椭圆,
        nXStartArc, nYStartArc, 从椭圆中心到这个点的一条射线。
        nXEndArc, nYEndArc 从椭圆中心到这个点的一条射线。上面的两射线就从椭圆上割下了椭圆弧。

例子:未注册版为200x200的jpg,320x240的gif
set s=createobject("wscript.shell")
set obj=CreateObject("shotgraph.image")
x=320:y=240
obj.createimage x,y,8

obj.setcolor 0,255,200,225
obj.setcolor 1,0,255,0
obj.setcolor 2,0,0,255

obj.setbgcolor 0
obj.fillrect 0,0,x-1,x-1

obj.setbgcolor 1
obj.chord 10,10,50,50,30,50,30,10

obj.jpegimage 90,0,"test.jpg"
s.run "test.jpg"
4--椭圆弓形区域chord /发音kuod/这个单词大家比较生僻,意思是弦,弓形
Chord nLeftRect, nTopRect, nRighrRect, nBottomRect, nXRadial1, nYRadial1, nXRadial2, nYRadial2
说明:参数含义完全同上面,只是这里得到的是弓形区域。
例子:
set s=createobject("wscript.shell")
set obj=CreateObject("shotgraph.image")

x=320:y=240
obj.createimage x,y,8

obj.setcolor 0,255,200,225
obj.setcolor 1,0,255,0
obj.setcolor 2,0,0,255

obj.setbgcolor 0
obj.fillrect 0,0,x-1,x-1

obj.setbgcolor 1
obj.chord 10,10,50,50,30,50,30,10

obj.jpegimage 90,0,"test.jpg"
s.run "test.jpg"
5---createbrush
CreateBrush sStyle, nColor, sHatch
说明:单词hatch---是光栅之意,或者说是影线,就是说填充的是一根根线。
        
EG.1
set s=createobject("wscript.shell")
set obj=CreateObject("shotgraph.image")

x=320:y=240
obj.createimage x,y,8

obj.setcolor 0,255,200,225
obj.setcolor 1,0,255,0
obj.setcolor 2,0,0,255

obj.setbgcolor 0
obj.fillrect 0,0,x-1,x-1

obj.createbrush "",1,""
obj.chord 10,10,50,50,30,50,30,10

obj.jpegimage 90,0,"test.jpg"
s.run "test.jpg"

EG.2
set s=createobject("wscript.shell")
set obj=CreateObject("shotgraph.image")

x=320:y=240
obj.createimage x,y,8

obj.setcolor 0,255,200,225
obj.setcolor 1,0,255,0
obj.setcolor 2,0,0,255

obj.setbgcolor 0
obj.fillrect 0,0,x-1,x-1

obj.createbrush "BS_HATCHED",1,"HS_VERCITCAL"
obj.chord 10,10,50,50,30,50,30,10

obj.jpegimage 90,0,"test.jpg"
s.run "test.jpg"

6---创建图像CreateImage nXSize, nYSize, nColors
说明:参数nXSize, nYSize设置图片的大小。参数 nColors 设置图片的背景色。

7----创建字体
CreateFont sFamily, nCharset, nHeight, nAngle, bBold, bItalic, bUnderline, bStrikeOut

[,bUnicode]
说明:sFamily 设置字体如Euclid,Rrial,对不支持中文字体。 nCharset指定字符集。nAngle旋转角度,取90*40才旋转一周。
bBold, bItalic, bUnderline, bStrikeO一次表示黑体否?斜体否?下划线否?删除线否?它们去逻辑值。

eg.1
set s=createobject("wscript.shell")
set obj=CreateObject("shotgraph.image")

x=320:y=240
obj.createimage x,y,8

obj.setcolor 0,255,200,225
obj.setcolor 1,0,255,0
obj.setcolor 2,0,0,255

obj.setbgcolor 0
obj.fillrect 0,0,x-1,x-1

obj.settextcolor 1
obj.createfont "arial",0,48,30,true,false,false,false
obj.textout 10,10,"hello world"

obj.gifimage 90,0,"test.gif"
s.run "test.gif"

8------创建笔CreatePen sStyle, nWidth, nColor
说明:sstyle笔的样式如:PS_SOLID(P-PEN,S-STYLE之意),PS_DASH,PS_DOTDASH
         nWidth笔的粗细, nColor笔的颜色。     
如:
obj.createpen "PS_SOLID",4,1
9---文字布局TextOut nXStart,nYStart,sText[,bUnicode]
说明: nXStart,nYStart设置文字在图片上显示的矩形的left top坐标。
          sText设置要显示的文字字符串
10---画线Line nXStart, nYStart, nXEnd, nYEnd [,bAntiAliased]
说明:nXStart, nYStart, nXEnd, nYEnd 线的起点和终点坐标。

-11-画饼Pie nLeftRect, nTopRect, nRighrRect, nBottomRect, nXRadial1, nYRadial1, nXRadial2, nYRadial2
说明:nLeftRect, nTopRect, nRighrRect, nBottomRect确定一个矩形框,框中放置了一个内切椭圆。假定椭圆的中心是P点。
         nXRadial1, nYRadial1确定一个点Q,然后PQ就确定了一条线。同样的道理 nXRadial2, nYRadial2 也和椭圆的中心P确定
        另一条线RQ.这样弓形就构造出来了。        

-12-贝塞尔曲线
PolyBezier aPoints
说明:apoints为数组定义的4个点,2个端点,2个控制点
如:apoints=arrary(0,0,10,30,24,50,100,50)
也可以是2维数组
bezier函数是数学上著名的多项式插值函数。
13---折线
PolyLine sFill, aPoints
说明:sfill取ALTERNATE(交替填色,如果有的话) ,WINDING
         通常可以空缺,如oimg.polyline " ",arrary(0,0,10,30,24,50,100,50),
         aPoints必须是由array生成的数组。这一点同上。
-14--矩形
Rectangle nXStart, nYStart, nXEnd, nYEnd
说明:nXStart, nYStart, nXEnd, nYEnd代表矩形的对角线坐标。
obj.rectangle 10,10,50,30

15--圆角矩形ROUNDrECT nXStart, nYStart, nXEnd, nYEnd, nWidth, nHeight
说明:nXStart, nYStart, nXEnd, nYEnd代表矩形的对角线坐标。
        nWidth, nHeight 圆角是放到一个小矩形中的,代表这个小矩形的宽,高。
obj.roundrect 10,10,100,80,20,20
16--设置填充色
SetBgColor nColor
说明:ncolor表示由setcolor定义的色编号。

17---设置背景色
SetBkColor nColor
说明:ncolor表示由setcolor定义的色编号。
         要更详细的设置背景就用createbrush方法。
18---设置背景模式为透明或不透明SetBkMode sMode
smode=OPAQUE 或TRANSPARENT
说明:在创建动画时,和设置光栅时其作用是明显的。
19---设置颜色
SetColor nColor, nRed, nGreen, nBlue
说明:ncolor给这个自定义颜色的编号,以便其它方法引用这个颜色。
         nRed, nGreen, nBlue   RGB颜色数,可以是16进制。


20--设置画笔颜色
SetDrawColor nColor
说明:ncolor表示由setcolor定义的色编号。
         要想更详细的设置画笔,就用CREATEPEN方法。

21--设置文本颜色
SetTextColor nColor
说明:ncolor表示由setcolor定义的色编号。
22--创建gif图片
GifImage nTransparent, nInterlaced, sFileName
说明:nTransparent  如果取true表示要背景色,否则不要背景色。如果无效那对光栅就有效。
        nInterlaced  消除内部据此,取0,1,2
23--创建jpg图片
JpegImage iCompression, iProgressive, sFileName [,nXStart] [,nYStart] [,Width] [,Height]

说明:icompresion一般去-1等价于去压缩率100,取-1的效果与去90的压缩率差不多。取1是很差的效果。
        如:obj.jpegimage -1,0,"text.jpg"
        iProgressive是否逐行扫描,设置为0即false好了。
        sFileName存盘路径。
        [,nXStart] [,nYStart] [,Width] [,Height]可选,存盘时改变图片的尺寸。
        gifimage方法存盘时是不可以改变图片的尺寸的。
      
24---获取磁盘上的图片文件的维数(dimension),就是图片大小。如400x300
GetFileDimensions sFileName,iX,iY
说明:sFileName磁盘上图片的路径
         iX,iY 磁盘文件的尺寸。这个方法要和readiamg配合作用才大,但是用readimage要钱。
如:obj.getfiledimensions "test.jpg",x,y
这里的x,y被读入内存,然后通过creatimage方法调用。
如:obj.createimage x,y,8
25---截屏

CaptureScreen nXDest, nYDest, nWidth, nHeight, nXSrc, nYSrc
说明:
     nXDest, nYDest, nWidth, nHeight确定要创建的图片的大小,nWidth, nHeight这与通常意义下的
      矩形框的确定方法不同。因为它们代表的是宽高。
      nXSrc, nYSrc 表示屏幕的一个点,由这个点到屏幕的左下角就是你的切屏范围。由于没有负费切的图片不大。
dest=distination,src=source
如:obj.capturescreen 10,10,50,50,0,0
10,10,50,50是你要保存的图片的对角线的坐标。
0,0是屏幕的coordinate of left-top point
26---补充创建gif动画
   创建gif动画有2个方法是必须要用到的trackadd,trackplay
   trackadd是用来定义动画区域的,而trackplay是用来存盘的。
   动画的size由于没purchase money。So,你就只可以使用320x240的size了。你觉得不过瘾
   那就pay dollar 80吧。对了最关键的一点是动画的frame怎么来?对了,用前面的划线啊,
   画矩形啊,话椭圆啊,画贝塞尔曲线啊这些方法去创建frame吧。那是你自己的创意了,与我
   无关了。
   TrackAdd iTransp,iXDecl,iYDecl,iX,iY,iWidth,iHeight,iTime [,sDisp]
   itransp: 透明否?
   ixdec1,iydec1配合iWidth,iHeight定义动画演示区域,就是帧。基于图片的letf-top开始计算。
   iX,iY上面定义的动画区域即帧,元件的位置就是ix,iy。这里的计算是基于动画区域
   开始计算的。
   itime:显示表示动画时间。
   sdisp=dispose处理之意。处理谁?不是frame才怪。怎么处理?
   也就是说sdisp有3个取值:"LEAVE","BACKGROUND","PREVIOUS",动画有什么拖尾动画,丢掉动画,就  

是这些意思。
   trackplay太明了,没说的。
   来过例子:
    obj.rectangle 10,30,50,50
    obj.trackadd true,10,10,20,20,80,80,30
    这就定义了一动画区域10,10,10+80,10+80
    在这个区域内,第一帧的位置是10-20,30-20,注意这不是图片的坐标!是动画区域内的坐标
    或叫相对坐标吧。如果让你来设计这个shotgraph我想你也会自然的用相对坐标。为了计算的方便,最后是是把trackadd里面的元件坐标和
   rectangle里面的元件坐标设置成一样,或干脆在trackadd里面把元件的坐标设置成0,0.
    这里的动画的逐帧动画,创建动画的过程。创建帧,在帧上在放元件,超出帧的部分将不显示。元件要放在帧上。注意次序。
    有点遗憾,就是图片有点小,还有textout只支持2个汉字。
27---剪辑版方法
     这里的图像剪辑版和windows剪辑版是完全不同的两个无关概念。它指的是内存里面开辟的一个缓冲区。
     要使用剪辑版,首先要创建图片,就是要在语句
     oimg.createimage xsize,yszie,ncolor 之后才可以使用!
     (a)oimg.initclipboard width,height
               说明:初始化剪辑版,即在内存里面创建一个宽为width,高为height的长方形区域。
     (b)oimg.selectclipboard true
              说明:激活剪辑版,剪辑版必须激活才可以使用。
     (c)oimg.copy  x,y,w,h,cx,cy "SRCCOPY"
              说明:从剪辑版中复制图片。cx,cy是剪辑版的左上顶点坐标。复制的图片就从这里开始直到剪辑版的右下角。
                把复制的图片粘贴到图片的矩形框上,其左上顶点为x,y,右下顶点为x+w,y+h
              
     (d)实例:
  1. set s=createobject("wscript.shell")
  2. set oimg=CreateObject("shotgraph.image")
  3. xsize=320:ysize=240
  4. oimg.createimage xsize,ysize,8
  5. oimg.setcolor 0,200,80,100
  6. oimg.setcolor 1,0,255,0
  7. oimg.setcolor 2,0,0,255
  8. oimg.setbgcolor 0
  9. oimg.fillrect 0,0,xsize,ysize
  10. oimg.initclipboard 50,50
  11. oimg.selectclipboard true
  12. oimg.setbgcolor 1
  13. oimg.rectangle 0,0,100,100
  14. oimg.copy 0,20,30,30,10,10,"SRCCOPY"
  15. oimg.copy 0,60,30,30,10,10,"SRCCOPY"
  16. oimg.copy 10,100,30,30,10,10,"SRCCOPY"
  17. oimg.gifimage -1,0,"hh.gif"
  18. s.run "hh.gif"
复制代码
28---数据传送
     可以把图片当数组数据进行传送。
    (a) 读入图片数据
    data=oimg.readbinaryfile("test.gif",maxsize)
      其中maxsize是预先自己设定的图片的最大尺寸,超出这个尺寸的数据将被丢掉。单位为字节byte。
    如可以设置maxsize=1024*10
     (b)写数据即数据存盘
    oimg.writebinary data,0,ubound(data)+1,"hhh.gif"
      说明:如果报错请把maxsize设置成一个更大的数。         
          0,ubound(data)+1表示数组的维数的最小值是0,最大值是按vb函数ubound计算出来的。
         什么样的图片都可以进行数据的传送,当然也可以进行图片格式的转变。
         如果报错,请把maxsize设置成更大的数。一般来讲如果是800x600,则maxsize=480000
             其它情况类似。

    (d)例子:
  1. set s=createobject("wscript.shell")
  2.                set oimg=CreateObject("shotgraph.image")
  3.                maxsize=480000
  4.               data=oimg.readbinaryfile("sunset.jpg",maxsize)
  5.               oimg.writebinary data,0,ubound(data)+1,"hhh.jpg"
  6.                s.run "hhh.jpg"
复制代码
GOOD LUCK!

TOP

26# powerbat


同意。我也差不多这样想。
---学无止境---

TOP

返回列表