找回密码  加入

QQ登录

只需一步,快速开始

AUTOIT CN

搜索
查看: 5368|回复: 130

[原创] 印章图生成[190819更新v1.5]

[复制链接]
发表于 2019-8-8 23:18:37 | 显示全部楼层 |阅读模式
本帖最后由 afan 于 2019-8-19 23:48 编辑

190819 发布1.5
        [新增]高清大图输出(此前最大440)
           可输出最大 1000 * 1000 的图片,以满足有特殊用途的用户需要
           当然不是简单的像素放大,那样会边界模糊
           此为矢量放大,可无限放大不模糊,只是此处完全没必要弄太大
           注:该功能仅供注册用户使用
        [修改]加宽字体选择弹出的下拉框,以满足习惯在列表中查看较长字体名的用户


今天闲着没事,把以前写的一个小工具翻出来改了改,弄上来蹭蹭热度
功能很简单,也没花式玩法。
所有参数设置均可实时生成预览
整体倾斜度可更显自然
油墨透明度亦可在覆图时更简单
各个功能均有提示,可直接上手操作

注意:由于本程序的特殊性,为避免传播易用作非法途径,如需使用完整功能,需跟帖说明,本人可赠送身份识别码(仅对论坛1年以上老用户开放,免费注册)。
后续,免费注册期已过,确切的说是不再提供注册版,请知悉。
另,已注册的用户请勿传播,身份识别码全球唯一。




更新历史:

190819 发布1.5
        [新增]高清大图输出(此前最大440)
           可输出最大 1000 * 1000 的图片,以满足有特殊用途的用户需要
           当然不是简单的像素放大,那样会边界模糊
           此为矢量放大,可无限放大不模糊,只是此处完全没必要弄太大
           注:该功能仅供注册用户使用
        [修改]加宽字体选择弹出的下拉框,以满足习惯在列表中查看较长字体名的用户

190816 发布1.4
        [修正]项目上弧文本、中平文本留空时,保存后再打开会有默认文本的问题

190813 发布1.3
        [修改]正圆值越小,上弧下弧文字就越贴近边框的问题
        [新增]新增“生成新图片”按钮,使用路径“图章PIC\图章_日期”保存图片
        [修改]生成图片后不再询问,直接打开浏览

190813 发布1.2
        [新增]可添加下弧文本及相关控制
        [新增]棋盘格背景可关闭
        [修改]简易注册(仅对论坛1年以上老用户开放,免费注册),未注册限制如下:
           下弧文本不可用
           仅可使用棋盘格背景的PNG模式
           仅可保存输出尺寸小于120的Demo图片

190811 发布1.1
        [新增]增加可调节正圆值的滑块,以绘制椭圆章
        [新增]增加可调节出图大小的滑块,以输出小于440的小尺寸图片
        [修改]优化内存占用
        [修正]一处可能引起保存图片时窗口发生闪烁的问题

190810 发布1.0
        [新增]透明模式使用棋盘格背景,以在调整油墨不透明度时更直观
        [修改]按住滑块调节参数及任何调整操作,图像均不再闪烁,如丝般顺滑

190809 发布0.9
        [新增]增加调节外圆边框宽度及样式的滑块
        [新增]增加调节上弧文字距外圆边框距离的滑块
        [新增]增加调节中部文字高度的滑块
        [新增]滑块激活时可通过键盘的上下左右键或鼠标滚轮调节
        [新增]可选择字体并可单独选择

190808 初版发布0.8





游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入

x

评分

5

查看全部评分

发表于 2019-8-9 07:39:24 | 显示全部楼层
为什么是0.8的版本

评分

1

查看全部评分

发表于 2019-8-9 07:45:46 | 显示全部楼层
处处为人民,人民的好版主

评分

1

查看全部评分

发表于 2019-8-9 08:05:18 | 显示全部楼层
能选择圆圈的放大与缩小和字体,就更好。
源码可放出学习吗?
发表于 2019-8-9 09:27:11 | 显示全部楼层
不错,有想法。学习了。
 楼主| 发表于 2019-8-9 09:31:44 | 显示全部楼层
lpxx 发表于 2019-8-9 07:39
为什么是0.8的版本

几年前的东西,因为有些小问题,比如调整参数时的实时生成画面有些闪烁,懒得弄了,个人觉得没到1.0的程度…
 楼主| 发表于 2019-8-9 09:41:38 | 显示全部楼层
顽固不化 发表于 2019-8-9 07:45
处处为人民,人民的好版主

有需要的 这货就有意义了
 楼主| 发表于 2019-8-9 09:59:10 | 显示全部楼层
chzj589 发表于 2019-8-9 08:05
能选择圆圈的放大与缩小和字体,就更好。
源码可放出学习吗?

圆圈的放大与缩小没有任何意义,我觉得首先这种设计就是错误的:
固定大小的画纸,不可能画出超出画面的圆;若画缩小的圆,又浪费了纸张的空间,留下太多的空白
我的设计是圆圈大小固定,即画纸空间最大化,但其内部的东西都可以放大与缩小,以达到整体大小观感的变化

对于适合印章的字体,其实也就宋体、隶书、楷书等等几种,最初有加入此功能的想法,后来想想就几种字体没必要就没搞了,如有需要加上也可以

源码很老很乱,恕不提供。昨天为了加个整体倾斜度都费了半天眼神,不知道当年怎么写的
发表于 2019-8-9 10:10:43 | 显示全部楼层
afan 发表于 2019-8-9 09:59
圆圈的放大与缩小没有任何意义,我觉得首先这种设计就是错误的:
固定大小的画纸,不可能画出超出画面的 ...

谢谢解答。
如是生成图,己经答到了。
我是想章的外圆圈有大有小,直径有改变
发表于 2019-8-9 10:51:54 | 显示全部楼层
版主怎么能这么强!!!
 楼主| 发表于 2019-8-9 11:24:11 来自手机 | 显示全部楼层
chzj589 发表于 2019-8-9 10:10
谢谢解答。
如是生成图,己经答到了。
我是想章的外圆圈有大有小,直径有改变

直径有变化其实就是我上面说的,如果前辈指的是粗细的话那是可以调整的,已经有此设计,暂未完成而已
发表于 2019-8-9 11:36:11 | 显示全部楼层
afan 发表于 2019-8-9 11:24
直径有变化其实就是我上面说的,如果前辈指的是粗细的话那是可以调整的,已经有此设计,暂未完成而已

能把放大与缩小的代码提供,我感觉自己的代码不能缩放自如

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入

x
发表于 2019-8-9 11:46:56 | 显示全部楼层
afan 发表于 2019-8-9 11:24
直径有变化其实就是我上面说的,如果前辈指的是粗细的话那是可以调整的,已经有此设计,暂未完成而已

帮我看看代码,并修改一下

  1. Func _Button1()
  2.         GUICtrlSetState($Checkbox1a, 1)
  3.         $zhang_danwei = GUICtrlRead($Input1)
  4.         $zhang_jiaodu = _GUICtrlSlider_GetPos($qishijiao)
  5.         $zhang_name = GUICtrlRead($Input3)
  6.         $zhang_r = _GUICtrlSlider_GetPos($banjing)
  7.         $zhang_jj = _GUICtrlSlider_GetPos($jiajiao)
  8.         wjx($zhang_danwei, $zhang_jiaodu, $zhang_name, $zhang_r, $zhang_jj)
  9. EndFunc   ;==>_Button1
  10. Func wjx($zhang_danwei, $zhang_jiaodu, $zhang_name, $zhang_r, $zhang_jj);绘制五角星
  11.         GUICtrlSendMsg($pic, 0x0172, 0, 0)
  12.         _GDIPlus_Startup()
  13.         $hImage = _GDIPlus_BitmapCreateFromScan0a(480, 480, 0, $GDIP_PXF32ARGB)
  14.         $Graphic = _GDIPlus_ImageGetGraphicsContext($hImage)
  15.         ;设置里程表的高和宽
  16.         $Width = 480
  17.         $Height = 480
  18.         ;设置图形对象的渲染质量,设置文本输出外观
  19.         _GDIPlus_GraphicsSetSmoothingMode($Graphic, 2)
  20.         ;将绘图平面的坐标原点移到窗口中心
  21.         _GDIPlus_GraphicsTranslateTransforma($Graphic, $Width / 2, $Height / 2)
  22.         $zecc = GUICtrlRead($zec)
  23.         ;绘制外圆
  24.         $pen = _GDIPlus_PenCreate(0xFFff0000, $zecc)
  25.         _GDIPlus_GraphicsDrawEllipse($Graphic, -($zhang_r / 2), -($zhang_r / 2), $zhang_r, $zhang_r, $pen)
  26.         ;输出五角星
  27.         Dim $r = Int($zhang_r * -0.15)
  28.         Dim $PI = 3.1415926535897932384626433832795;$PI = 3.14159265358979;3.1415926
  29.         Local $aPoints[13][2] = [ _
  30.                         [12], _
  31.                         [0, $r], _
  32.                         [Int(Tan(36 * $PI / 180) * Cos(72 * $PI / 180) * $r), Int(Cos(72 * $PI / 180) * $r)], _
  33.                         [Int(Cos(18 * $PI / 180) * $r), Int(Sin(18 * $PI / 180) * $r)], _
  34.                         [Int(Sin(72 * $PI / 180) * Cos(72 * $PI / 180) * $r / Cos(36 * $PI / 180)), -(Int(Sin(18 * $PI / 180) * Cos(72 * $PI / 180) * $r / Cos(36 * $PI / 180)))], _
  35.                         [Int(Sin(36 * $PI / 180) * $r), Int(-(Cos(36 * $PI / 180) * $r))], _
  36.                         [0, Int(-(Cos(72 * $PI / 180) * $r / Cos(36 * $PI / 180)))], _
  37.                         [Int(-(Sin(36 * $PI / 180) * $r)), Int(-(Cos(36 * $PI / 180) * $r))], _
  38.                         [-(Int(Sin(72 * $PI / 180) * Cos(72 * $PI / 180) * $r / Cos(36 * $PI / 180))), -(Int(Sin(18 * $PI / 180) * Cos(72 * $PI / 180) * $r / Cos(36 * $PI / 180)))], _
  39.                         [-(Int(Cos(18 * $PI / 180) * $r)), Int(Sin(18 * $PI / 180) * $r)], _
  40.                         [-(Int(Tan(36 * $PI / 180) * Cos(72 * $PI / 180) * $r)), Int(Cos(72 * $PI / 180) * $r)], _
  41.                         [0, $r]]

  42.         $Brush = _GDIPlus_BrushCreateSolid(0xFFff0000)
  43.         _GDIPlus_GraphicsFillPolygon($Graphic, $aPoints, $Brush)

  44.         ;输出文本
  45.         $zeaa = GUICtrlRead($zea)
  46.         $zebb = GUICtrlRead($zeb)
  47.         $zedd = GUICtrlRead($zed)
  48.         $zedx = GUICtrlRead($banjingx1)
  49.         $zhang_rx = _GUICtrlSlider_GetPos($banjingx)
  50.         $Family = _GDIPlus_FontFamilyCreate($zedd)
  51.         $Font = _GDIPlus_FontCreate($Family, $zeaa, 1, 2);创建字体对象
  52.         $Font1 = _GDIPlus_FontCreate($Family, $zebb, 1, 2);字体
  53.         $Font2 = _GDIPlus_FontCreate($Family, $zedx, 1, 2)
  54.         $Brush = _GDIPlus_BrushCreateSolid(0xFFDD2200);0xFFff0000)
  55.         $Format = _GDIPlus_StringFormatCreate()
  56.         _GDIPlus_StringFormatSetAlign($Format, 1)
  57.         $zhang_w = _GUICtrlSlider_GetPos($zhang_l)
  58.         $zhang_gg = _GUICtrlSlider_GetPos($zhang_g)
  59.         $zhang_rx1 = _GUICtrlSlider_GetPos($banjingx)
  60.         $zhang_rx2 = _GUICtrlSlider_GetPos($banjingx2)
  61.         $zhang_r = _GUICtrlSlider_GetPos($banjing)
  62.         $Layout = _GDIPlus_RectFCreate(-($zhang_r / 2) + (_GDIPlus_FontGetSizea($Font)) * 1 + 1, ($zhang_r + _GDIPlus_FontGetSizea($Font)) / 1.23 - $zhang_rx + 5, $zhang_r - (_GDIPlus_FontGetSizea($Font)) * 2, _GDIPlus_FontGetSizea($Font))

  63.         $BA1 = $zhang_r / 3.5 - $zhang_r + $zhang_rx2 - 18
  64.         $BA2 = $zhang_r / 2 - $zhang_r + $zhang_rx1
  65.         $BA3 = $zhang_rx2
  66.         $BA4 = $zhang_gg
  67.         $Layout3 = _GDIPlus_RectFCreate($BA1, $BA2, $BA3, $BA4)
  68.         $Layout2 = _GDIPlus_RectFCreate(-55, 60, 120, 100)
  69.         _GDIPlus_GraphicsDrawStringEx($Graphic, $zhang_name, $Font2, $Layout, $Format, $Brush)

  70.         _GDIPlus_GraphicsResetTransforma($Graphic)
  71.         _GDIPlus_GraphicsTranslateTransforma($Graphic, $Width / 2, $Height / 2)
  72.         _GDIPlus_GraphicsRotateTransforma($Graphic, $zhang_jiaodu)

  73.         Dim $sp = StringSplit($zhang_danwei, "")
  74.         For $i = 1 To $sp[0]
  75.                 $Brush = _GDIPlus_BrushCreateSolid(0xFFff0000)
  76.                 $Layout = _GDIPlus_RectFCreate(-10, $zhang_r / (-2) + (_GDIPlus_FontGetSizea($Font)) / 2)
  77.                 _GDIPlus_GraphicsDrawStringEx($Graphic, $sp[$i], $Font, $Layout, $Format, $Brush)
  78.                 _GDIPlus_GraphicsRotateTransforma($Graphic, $zhang_jj)
  79.         Next
  80.         _GDIPlus_GraphicsResetTransforma($Graphic)
  81.         $Bmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
  82.         $OldBmp = GUICtrlSendMsg($pic, 0x0172, 0, $Bmp)
  83.         $CLSID = _GDIPlus_EncodersGetCLSID("PNG")
  84.         _WinAPI_DeleteObject($OldBmp)
  85.         _WinAPI_DeleteObject($hImage)
  86.         _GDIPlus_ImageDispose($hImage)
  87.         _GDIPlus_GraphicsDispose($Graphic)
  88.         _GDIPlus_PenDispose($pen)
  89.         _GDIPlus_FontDispose($Font)
  90.         _GDIPlus_FontFamilyDispose($Family)
  91.         _GDIPlus_StringFormatDispose($Format)
  92.         _GDIPlus_BrushDispose($Brush)
  93.         _GDIPlus_Shutdown()
  94. EndFunc   ;==>wjx
复制代码
发表于 2019-8-9 12:21:13 | 显示全部楼层
不错的工具

评分

1

查看全部评分

 楼主| 发表于 2019-8-9 12:22:59 | 显示全部楼层
chzj589 发表于 2019-8-9 11:46
帮我看看代码,并修改一下

你这代码我不好改,不好理解,费劲
光看五角星就醉了,不如帮助文档搜 _GDIPlus_PathWindingModeOutline 有实例。
缩放可以用到矩阵,比如帮助文档搜 _GDIPlus_MatrixScale
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|小黑屋|手机版|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2019-12-9 23:36 , Processed in 0.093750 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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