Foxtable(狐表)用户栏目专家坐堂 → [求助]图片添加水印报错了


  共有3615人关注过本帖树形打印复制链接

主题:[求助]图片添加水印报错了

帅哥哟,离线,有人找我吗?
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/25 20:38:00 [显示全部帖子]

打开文件需要绝对路径!

msgbox(e.FileName)
Dim file As String = ProjectPath & "Attachments\" & e.FileName
Dim img As image = getImage(file)

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/25 21:41:00 [显示全部帖子]

这个代码不可能有这种提示。上传实例说明

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/25 22:33:00 [显示全部帖子]

不能在这个事件用。这里只能获取文件名,不知道是从哪里添加的文件,文件也还没有添加到Attachments,无法取得文件完整路径。

放到datacolchanged事件

If e.DataCol.Name = "第二列" Then
    If e.OldValue Is Nothing AndAlso e.NewValue > "" Then
        ‘添加水印的代码
    End If
End If

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/25 22:54:00 [显示全部帖子]

Dim file As String = ProjectPath & "Attachments\" & e.NewValue
msgbox(file)


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/26 8:46:00 [显示全部帖子]

这个代码仍然保留在BeforeAttachFile事件

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/26 10:24:00 [显示全部帖子]

第一列、第三列没有值吧

if e.DataRow.isnull("第一列") = false
    e.FileName=e.DataRow("第一列")
end if
if e.DataRow.isnull("第三列") = false
    e.SubFolder = e.DataRow("第三列")
end if

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/26 11:07:00 [显示全部帖子]

BeforeAttachFile


if e.DataRow.isnull("第一列") = false
    e.FileName=e.DataRow("第一列") & "." &   e.FileName.Split(".")(1)
end if
if e.DataRow.isnull("第三列") = false
    e.SubFolder = e.DataRow("第三列")
end if

datacolchanged
If e.DataCol.Name = "第二列" Then
    If e.OldValue Is Nothing AndAlso e.NewValue > "" Then
        Dim txt As String =  e.DataRow("第一列")
        
        Dim img As image = getImage(ProjectPath & "Attachments\" & e.NewValue)
        Dim bmp  = new bitmap(img.Width, img.Height)
        Dim g = graphics.fromimage(bmp)
        g.DrawImage(img,0,0)
        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High
        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
        Dim fnt As new Font("微软雅黑", 60, FontStyle.Bold)
        Dim size = g.MeasureString(txt, fnt)
        g.TranslateTransform((img.width-size.width)/2, img.Height - size.height - 50)
        Dim semiTransBrush As new System.Drawing.SolidBrush(Color.FromArgb(120, 177, 171, 171))
        g.DrawString(txt, fnt, semiTransBrush, new PointF(0,0))
        bmp.save(ProjectPath & "Attachments\" & e.NewValue,img.RawFormat)
        bmp.Dispose
        semiTransBrush.Dispose
    End If
End 

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/26 13:43:00 [显示全部帖子]

这种不适合在表事件里处理,建议做个窗口添加图片

 回到顶部