搜索
查看: 841|回复: 1

通过bitmap创建了图形对象graphics 后怎么释放?

[复制链接]

11

主题

31

帖子

190

积分

一级会员

Rank: 2

积分
190
发表于 2018-5-20 14:41:42 | 显示全部楼层 |阅读模式
本帖最后由 261041951 于 2018-5-20 14:52 编辑

代码如下,我想分别在两张图片上添加文字,测试了几次发现时,创建了图形对象graphics,使codePic.jpg处于占用模式,导致下载保存第二张图片失败!所以添加文字都是以第一张图片作为画板,求指点~

  1. import console;
  2. import inet.whttp
  3. import gdip;     
  4. import win

  5. http=inet.whttp()

  6. function imgEdit(codeText){
  7.         var bmp = gdip.bitmap("D:\codePic.jpg");
  8.         //图形对象graphics(可以看作是画板)
  9.         var graphics = gdip.graphics(  bmp )

  10.         //创建刷子
  11.         var brush = gdip.solidBrush(0xFF000000);
  12.         var brush1 = gdip.solidBrush(0xFFFFFFFF);
  13.         //用刷子填充矩形内部  
  14.         graphics.fillRectangle( brush1, 1, 1, 100, 25 )
  15.         
  16.         //创建FontFamily
  17.         var family = gdip.family("微软雅黑");
  18.         
  19.         //创建stringFormat
  20.         var strformat = gdip.stringformat ( );
  21.         
  22.         //设置样式
  23.         strformat.align = 0/*_GdipStringAlignmentNear*/;
  24.         
  25.         //创建Font
  26.         var curFont = family.createFont(  15,2/*_GdipFontStyleItalic*/, 2/*_GdipUnitPixel*/)
  27.         
  28.         //设置文字抗据齿
  29.         graphics.smoothingMode = 4/*_GdipSmoothingModeAntiAlias*/ ;
  30.         
  31.         //消除走样,且边作平滑处理
  32.         graphics.textRenderingHint = 3/*_GdipTextRenderingHintAntiAliasGridFit*/;

  33.         //设置文字区域
  34.         rclayout = gdip.RECTF();
  35.         rclayout.x = 1
  36.         rclayout.y = 1
  37.         rclayout.width = 310 //在这里指的是宽度
  38.         rclayout.height = 155 //在这里指的是高度
  39.                
  40.         graphics.drawString( codeText  , curFont
  41.         , rclayout, strformat,brush);
  42.         
  43.         bmp.save("D:\codeText.jpg",100)


  44.         //删除所有GDI+对象   
  45.         brush.delete()
  46.         curFont.delete()
  47.         strformat.delete();
  48.         family.delete();
  49.         bmp.dispose()
  50. }

  51. picArr={"http://a2.att.hudong.com/78/62/01300000046334122403626334048.jpg";"http://a4.att.hudong.com/83/26/01300000321893124982267995970.jpg"}

  52. for(i=1;2;1){
  53.         string.save("D:\codePic.jpg",http.get(picArr[ i ]))
  54.         
  55.         imgEdit("测试文字:"++i)
  56.         
  57.         win.delay(1000)
  58. }

复制代码


回复

使用道具 举报

11

主题

31

帖子

190

积分

一级会员

Rank: 2

积分
190
 楼主| 发表于 2018-5-20 15:55:57 | 显示全部楼层
已解决~
  1. graphics.delete()
复制代码

光看提示说自动释放,就没有加这句
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-10-24 11:50 , Processed in 0.078125 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表