以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助] drawcell的图片居中显示  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=138309)

--  作者:hotday1972
--  发布时间:2019/7/28 10:01:00
--  [求助] drawcell的图片居中显示

图片点击可在新窗口打开查看此主题相关图片如下:捕获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
--  发布时间:2019/7/28 13:08:00
--  
有老师在吗
--  作者:y2287958
--  发布时间: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
--  发布时间:2019/7/28 21:56:00
--  
不懂啊,有没有具体点的办法?
--  作者:有点蓝
--  发布时间: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
--  发布时间:2019/7/29 15:00:00
--  
蓝老师,

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

--  作者:有点蓝
--  发布时间:2019/7/29 15:09:00
--  
e.Graphics.DrawImage(_AttachImg, e.x + x,e.y + y)
--  作者:hotday1972
--  发布时间: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
--  发布时间: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
--  发布时间: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!谢谢蓝老师!又学到一点新知识,开心!