Foxtable(狐表)用户栏目专家坐堂 → [求助] drawcell的图片居中显示


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

主题:[求助] drawcell的图片居中显示

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


加好友 发短信
等级:一尾狐 帖子:430 积分:2889 威望:0 精华:0 注册:2015/4/28 21:12:00
[求助] drawcell的图片居中显示  发帖心情 Post By:2019/7/28 10:01:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:捕获1.jpg
图片点击可在新窗口打开查看

怎么让drawcell画出的图片上下方向上居中显示,如图

If e.Row.IsNull("证据") Then e.Graphics.DrawImage(_AttachImg, e.x + 3, e.y + 3)

谢谢老师


[此贴子已经被作者于2019/7/28 10:02:28编辑过]

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


加好友 发短信
等级:一尾狐 帖子:430 积分:2889 威望:0 精华:0 注册:2015/4/28 21:12:00
  发帖心情 Post By:2019/7/28 13:08:00 [只看该作者]

有老师在吗

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


加好友 发短信
等级:狐神 帖子:4650 积分:33912 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2019/7/28 15:05:00 [只看该作者]

在单元格中直接绘图

在介绍表事件DrawCell的时候,我们了解了通过更改文本和样式,让单元格的显示变得丰富多彩。
其实这只是DrawCell事件的最基础用法,在此之外,该事件还提供了通过GDI+绘图的功能。

DrawCell事件的完整e参数属性:

Table:      准备绘制的表
Row:        准备绘制的行
Col:        准备绘制的列
Style:     指定自定义样式的名称,如果用默认的样式绘制单元格,无须设置Style属性。
Text:      字符型,获得或者设置要绘制的文本内容
X:          要绘制单元格的水平坐标位置,单位为像素
Y:          要绘制单元格的垂直坐标位置,单位为像素
Width:     要绘制单元格的宽度,单位为像素
Height:    要绘制单元格的高度,单位为像素

Graphics:  返回一个Graphics对象,通过这个对象可以在单元格中绘制图形。
MouseHover: 逻辑型,如果鼠标停在此单元格,则返回True,否则返回False。
IsPrint:   逻辑型,是否是因为打印表而触发了DrawCell事件。


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


加好友 发短信
等级:一尾狐 帖子:430 积分:2889 威望:0 精华:0 注册:2015/4/28 21:12:00
  发帖心情 Post By:2019/7/28 21:56:00 [只看该作者]

不懂啊,有没有具体点的办法?

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


加好友 发短信
等级:超级版主 帖子:107846 积分:548581 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/28 23:01:00 [只看该作者]

If e.Row.IsNull("证据") Then 
    dim x as integer = (e.Width - _AttachImg.width) / 2
    dim y as integer = (e.Height _AttachImg.Height) / 2
    e.Graphics.DrawImage(_AttachImg, x,y)
end if

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


加好友 发短信
等级:一尾狐 帖子:430 积分:2889 威望:0 精华:0 注册:2015/4/28 21:12:00
  发帖心情 Post By:2019/7/29 15:00:00 [只看该作者]

蓝老师,

不在我要的那一列的单元格里了,跑到整个表格的左上角去了!

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


加好友 发短信
等级:超级版主 帖子:107846 积分:548581 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/29 15:09:00 [只看该作者]

e.Graphics.DrawImage(_AttachImg, e.x + x,e.y + y)

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


加好友 发短信
等级:一尾狐 帖子:430 积分:2889 威望:0 精华:0 注册:2015/4/28 21:12:00
  发帖心情 Post By:2019/7/29 15:12:00 [只看该作者]

改成以下,测试完美!

            Dim ht As Integer  = e.Height / 2 + _AttachImg.Height
            If e.Row.IsNull("证据") Then e.Graphics.DrawImage(_AttachImg, e.x + 3, ht)

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


加好友 发短信
等级:一尾狐 帖子:430 积分:2889 威望:0 精华:0 注册:2015/4/28 21:12:00
  发帖心情 Post By:2019/7/29 15:18:00 [只看该作者]

最终改为:
Dim ht As Integer  = e.Height / 2 + _AttachImg.Height / 2
If e.Row.IsNull("证据") Then e.Graphics.DrawImage(_AttachImg, e.x + 3, ht)

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


加好友 发短信
等级:一尾狐 帖子:430 积分:2889 威望:0 精华:0 注册:2015/4/28 21:12:00
  发帖心情 Post By:2019/7/29 15:26:00 [只看该作者]

Dim ht As Integer  = e.Height / 2 - _AttachImg.Height / 2
If e.Row.IsNull("证据") Then e.Graphics.DrawImage(_AttachImg, e.x + 3, e.y + ht)

解决了,测试多行,OK!谢谢蓝老师!又学到一点新知识,开心!

 回到顶部