找回密码
 加入
搜索
查看: 68678|回复: 199

[原创] 印章图生成 1.9

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

220826        发布1.9
        [新增]可导入一个图片代替棋盘格作为背景参照图
           如果有图章图片作为参照,可更容易模仿真实图章,现已加入该功能
           在预览图上点击右键,有三个菜单“浏览选择、自定义底图、棋盘格底图”
           默认底图为“棋盘格底图”,如需使用参照图,可“浏览选择”一个图片文件以导入
           图片载入时会拉伸至整个预览控件大小,因此,若截图时并非完全正圆也会拉伸成正圆效果
           相对应的,若参照图本身就是椭圆章,则截图时必须截为正方形构图,这样则不会拉伸
           注:窗口的 勾选/取消勾选“棋盘格底”复选框 仍作为 显示/不显示 背景底图功能


很久前写的一个小工具,抽空翻出来改改,弄上来凑凑热闹~
所有参数设置均可实时生成预览
整体倾斜度可更显自然
油墨透明度亦可在覆图时更简单
仿真划痕更具真实感
各个功能均有提示,可直接上手操作

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




更新历史:

220826        发布1.9
        [新增]可导入一个图片代替棋盘格作为背景参照图
           如果有图章图片作为参照,可更容易模仿真实图章,现已加入该功能
           在预览图上点击右键,有三个菜单“浏览选择、自定义底图、棋盘格底图”
           默认底图为“棋盘格底图”,如需使用参照图,可“浏览选择”一个图片文件以导入
           图片载入时会拉伸至整个预览控件大小,因此,若截图时并非完全正圆也会拉伸成正圆效果
           相对应的,若参照图本身就是椭圆章,则截图时必须截为正方形构图,这样则不会拉伸
           注:窗口的 勾选/取消勾选“棋盘格底”复选框 仍作为 显示/不显示 背景底图功能

220515        发布1.8
        [修改]印痕镂空,达到更真实的模拟效果

220514        发布1.7
        [新增]可勾选“仿真印痕”模拟类似残印漏印以达到更真实的印章效果
           右键点击该复选框可生成随机印痕效果
           注:该功能仅供注册用户使用

200909        发布1.6
        [修正]在某些win10系统可能无法载入字体的问题

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





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

本帖子中包含更多资源

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

×

评分

参与人数 11威望 +33 金钱 +740 贡献 +39 收起 理由
metest + 20 赞一个!
fjvip + 30 很给力!希望我点赞,可以得到一个注册研究.
anythinging + 40 赞一个!
gapkiller + 60 这太牛啦~~~
user3000 + 30 很给力!

查看全部评分

 楼主| 发表于 2020-9-9 14:35:51 | 显示全部楼层
zpmc123 发表于 2020-9-9 14:34
可以正常使用!工具比起网上其它的好用多了,只是可惜错过了注册版!

简单,你点赞我送注册

点评

注册码已收到,这种注册方式很神奇!感谢AFAN大的盛情!:face (15):  发表于 2020-9-9 21:55
发表于 2019-8-9 07:39:24 | 显示全部楼层
为什么是0.8的版本

评分

参与人数 1金钱 +30 收起 理由
afan + 30 SF~

查看全部评分

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

评分

参与人数 1金钱 +20 收起 理由
afan + 20 BD~

查看全部评分

发表于 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
直径有变化其实就是我上面说的,如果前辈指的是粗细的话那是可以调整的,已经有此设计,暂未完成而已

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

本帖子中包含更多资源

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

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

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

Func _Button1()
        GUICtrlSetState($Checkbox1a, 1)
        $zhang_danwei = GUICtrlRead($Input1)
        $zhang_jiaodu = _GUICtrlSlider_GetPos($qishijiao)
        $zhang_name = GUICtrlRead($Input3)
        $zhang_r = _GUICtrlSlider_GetPos($banjing)
        $zhang_jj = _GUICtrlSlider_GetPos($jiajiao)
        wjx($zhang_danwei, $zhang_jiaodu, $zhang_name, $zhang_r, $zhang_jj)
EndFunc   ;==>_Button1
Func wjx($zhang_danwei, $zhang_jiaodu, $zhang_name, $zhang_r, $zhang_jj);绘制五角星
        GUICtrlSendMsg($pic, 0x0172, 0, 0)
        _GDIPlus_Startup()
        $hImage = _GDIPlus_BitmapCreateFromScan0a(480, 480, 0, $GDIP_PXF32ARGB)
        $Graphic = _GDIPlus_ImageGetGraphicsContext($hImage)
        ;设置里程表的高和宽
        $Width = 480
        $Height = 480
        ;设置图形对象的渲染质量,设置文本输出外观
        _GDIPlus_GraphicsSetSmoothingMode($Graphic, 2)
        ;将绘图平面的坐标原点移到窗口中心
        _GDIPlus_GraphicsTranslateTransforma($Graphic, $Width / 2, $Height / 2)
        $zecc = GUICtrlRead($zec)
        ;绘制外圆
        $pen = _GDIPlus_PenCreate(0xFFff0000, $zecc)
        _GDIPlus_GraphicsDrawEllipse($Graphic, -($zhang_r / 2), -($zhang_r / 2), $zhang_r, $zhang_r, $pen)
        ;输出五角星
        Dim $r = Int($zhang_r * -0.15)
        Dim $PI = 3.1415926535897932384626433832795;$PI = 3.14159265358979;3.1415926
        Local $aPoints[13][2] = [ _
                        [12], _
                        [0, $r], _
                        [Int(Tan(36 * $PI / 180) * Cos(72 * $PI / 180) * $r), Int(Cos(72 * $PI / 180) * $r)], _
                        [Int(Cos(18 * $PI / 180) * $r), Int(Sin(18 * $PI / 180) * $r)], _
                        [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)))], _
                        [Int(Sin(36 * $PI / 180) * $r), Int(-(Cos(36 * $PI / 180) * $r))], _
                        [0, Int(-(Cos(72 * $PI / 180) * $r / Cos(36 * $PI / 180)))], _
                        [Int(-(Sin(36 * $PI / 180) * $r)), Int(-(Cos(36 * $PI / 180) * $r))], _
                        [-(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)))], _
                        [-(Int(Cos(18 * $PI / 180) * $r)), Int(Sin(18 * $PI / 180) * $r)], _
                        [-(Int(Tan(36 * $PI / 180) * Cos(72 * $PI / 180) * $r)), Int(Cos(72 * $PI / 180) * $r)], _
                        [0, $r]]

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

        ;输出文本
        $zeaa = GUICtrlRead($zea)
        $zebb = GUICtrlRead($zeb)
        $zedd = GUICtrlRead($zed)
        $zedx = GUICtrlRead($banjingx1)
        $zhang_rx = _GUICtrlSlider_GetPos($banjingx)
        $Family = _GDIPlus_FontFamilyCreate($zedd)
        $Font = _GDIPlus_FontCreate($Family, $zeaa, 1, 2);创建字体对象
        $Font1 = _GDIPlus_FontCreate($Family, $zebb, 1, 2);字体
        $Font2 = _GDIPlus_FontCreate($Family, $zedx, 1, 2)
        $Brush = _GDIPlus_BrushCreateSolid(0xFFDD2200);0xFFff0000)
        $Format = _GDIPlus_StringFormatCreate()
        _GDIPlus_StringFormatSetAlign($Format, 1)
        $zhang_w = _GUICtrlSlider_GetPos($zhang_l)
        $zhang_gg = _GUICtrlSlider_GetPos($zhang_g)
        $zhang_rx1 = _GUICtrlSlider_GetPos($banjingx)
        $zhang_rx2 = _GUICtrlSlider_GetPos($banjingx2)
        $zhang_r = _GUICtrlSlider_GetPos($banjing)
        $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))

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

        _GDIPlus_GraphicsResetTransforma($Graphic)
        _GDIPlus_GraphicsTranslateTransforma($Graphic, $Width / 2, $Height / 2)
        _GDIPlus_GraphicsRotateTransforma($Graphic, $zhang_jiaodu)

        Dim $sp = StringSplit($zhang_danwei, "")
        For $i = 1 To $sp[0]
                $Brush = _GDIPlus_BrushCreateSolid(0xFFff0000)
                $Layout = _GDIPlus_RectFCreate(-10, $zhang_r / (-2) + (_GDIPlus_FontGetSizea($Font)) / 2)
                _GDIPlus_GraphicsDrawStringEx($Graphic, $sp[$i], $Font, $Layout, $Format, $Brush)
                _GDIPlus_GraphicsRotateTransforma($Graphic, $zhang_jj)
        Next
        _GDIPlus_GraphicsResetTransforma($Graphic)
        $Bmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
        $OldBmp = GUICtrlSendMsg($pic, 0x0172, 0, $Bmp)
        $CLSID = _GDIPlus_EncodersGetCLSID("PNG")
        _WinAPI_DeleteObject($OldBmp)
        _WinAPI_DeleteObject($hImage)
        _GDIPlus_ImageDispose($hImage)
        _GDIPlus_GraphicsDispose($Graphic)
        _GDIPlus_PenDispose($pen)
        _GDIPlus_FontDispose($Font)
        _GDIPlus_FontFamilyDispose($Family)
        _GDIPlus_StringFormatDispose($Format)
        _GDIPlus_BrushDispose($Brush)
        _GDIPlus_Shutdown()
EndFunc   ;==>wjx
发表于 2019-8-9 12:21:13 | 显示全部楼层
不错的工具

评分

参与人数 1金钱 +20 收起 理由
afan + 20 一般一般

查看全部评分

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

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

本版积分规则

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

GMT+8, 2024-12-22 15:54 , Processed in 0.093649 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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