以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  这个画图有什么错误啊  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=146469)

--  作者:goldenfont
--  发布时间:2020/2/24 17:00:00
--  这个画图有什么错误啊
老师,我想动态增加多个painter,用来画田字格,但是我下面的代码,如果是换成panel,是正常添加,而且正常画出来的,但是改成painter怎么就画不出来了?
Dim p As WinForm.Painter \'定义添加的画板
Dim Total_num As Integer = Colors.Length * sizes.Length \'定义总共画多少个框
Dim rt_Height As Integer = 70 \'每个田字格的高度
Dim rt_Width As Integer = 35 \'每个田字格的宽度
Dim py_x As Integer = 10 \'X从哪里画起
Dim py_y As Integer = 10 \'Y从哪里画起
Dim idx As Integer = 1
For i As Integer = 0 To Colors.Length - 1 \'先循环几个颜色画边框
    For j As Integer = 0 To Sizes.Length - 1 \'循环几个尺码画边框
        p = e.Form.CreateControl("p" & idx, ControlTypeEnum.Painter) \'定义要增加控件,控件名p1,p2......
        p.Width= rt_Width
        p.Height = rt_Height
        p.left = py_x + j * rt_Width
        p.Top = py_y + i * rt_Height
        \'p.BorderStyle = BorderStyle.FixedSingle
        e.Form.Controls("pnlPLU").AddControl(p) \'在panel父容器中增加子原件
        idx = idx + 1 \'控件名往后增加1
        Dim g As Graphics = p.Graphics
        Dim n As New Pen(Color.Red,1) \'以画笔为1的粗细画矩形
        g.DrawRectangle(n,p.Left,p.Top,p.Width,p.Height)
        p.Repaint()
    Next
Next

--  作者:有点蓝
--  发布时间:2020/2/24 17:19:00
--  
控件的位置设置有问题,最终要什么效果,画图看看
--  作者:goldenfont
--  发布时间:2020/2/24 17:32:00
--  
用panel画出来是正确的,换成painter就不对了,就想画成这样的效果
图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2020/2/24 17:49:00
--  
g.DrawRectangle(n,0,0,p.Width-1,p.Height-1)
--  作者:goldenfont
--  发布时间:2020/2/24 18:24:00
--  
哦哦,这意思就是,g其实是在p里面画图的,有点子控件的那个感觉,所以从p的,left,top开始,所以是0,0这个意思吧
--  作者:有点蓝
--  发布时间:2020/2/24 20:14:00
--  
嗯,绘制的参考坐标为p控件,而不是窗口