以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  嫦娥报表的标尺怎么做啊  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=77406)

--  作者:freeants
--  发布时间:2015/11/17 19:31:00
--  嫦娥报表的标尺怎么做啊
如题,嫦娥报表上面有个 高大上的 标尺, 不知道如何做出来的。



--  作者:大红袍
--  发布时间:2015/11/17 19:39:00
--  

简单的方式,就是动态的画两条线就好。

 

类似的,参考

 

下载信息  [文件大小:288.0 KB  下载次数:35]
图片点击可在新窗口打开查看点击浏览该文件:鼠标框选效果.table


--  作者:freeants
--  发布时间:2015/11/17 21:02:00
--  
画的多了,或看见 一个个画过去,有没有等同于 表格 那种 stopdraw 这种方法吗
--  作者:cyl123
--  发布时间:2015/11/17 21:02:00
--  
动态标尺如何做?面板已承载标尺,不能再加载gdi划线呀
--  作者:freeants
--  发布时间:2015/11/17 21:09:00
--  
可以啊,加载的面板  里面画出标尺
--  作者:大红袍
--  发布时间:2015/11/17 21:27:00
--  
以下是引用freeants在2015/11/17 21:02:00的发言:
画的多了,或看见 一个个画过去,有没有等同于 表格 那种 stopdraw 这种方法吗

 

你试试双缓存。不行,就做个具体的例子上来看看。

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=55385&skin=0

 

 

 


--  作者:freeants
--  发布时间:2015/11/17 21:54:00
--  
列子来了, 另外 怎么让窗口 启动的时候 显示它 ,放在AFTERLOAD里面没有反应
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:标尺.foxdb


[此贴子已经被作者于2015/11/17 21:54:50编辑过]

--  作者:大红袍
--  发布时间:2015/11/17 23:07:00
--  

画好像不行,用图片吧。

 

Dim bcs As WinForm.Panel = e.Form.Controls("I_标尺上")
Dim bcz As WinForm.Panel = e.Form.Controls("I_标尺左")
Dim yk As WinForm.Panel = e.Form.Controls("I_样卡")
Dim fnt As New Font("Noto Sans S Chinese Regular",9)
Dim gap As Integer = 3

Dim bmps As new Bitmap(cint(SysInfo.ScreenWidth), bcs.height)
Dim g = graphics.fromimage(bmps)
For i As Integer = 0 To bmps.Width \\ gap
    If i Mod 10 = 0 Then
        g.DrawLine(Pens.Gray,i*gap,0,i*gap,22)
    ElseIf i Mod 5 = 0 Then
        g.DrawLine(Pens.Gray,i*gap,0,i*gap,10)
    Else
        g.DrawLine(Pens.Gray,i*gap,0,i*gap,5)
    End If
    If  i Mod 10 = 2 Then
        g.DrawString( i \\ 10 +1 ,fnt ,Brushes.Gray,i*gap , 10)
    End If
Next
bcs.basecontrol.backGroundimage = bmps

Dim bmpz As new Bitmap(bcz.width, cint(SysInfo.ScreenHeight))
g = graphics.fromimage(bmpz)
For i As Integer = 0 To bmpz.Height \\ gap
    If i Mod 10 = 0 Then
        g.DrawLine(Pens.Gray,0,27+i*gap,22,27+i*gap)
       
    ElseIf i Mod 5 = 0 Then
        g.DrawLine(Pens.Gray,0,27+i*gap,10,27+i*gap)
    Else
        g.DrawLine(Pens.Gray,0,27+i*gap,5,27+i*gap)
    End If
    If i Mod 10 = 2 Then
        g.DrawString( i \\ 10 +1 ,fnt ,Brushes.Gray,10,27+i*gap)
    End If
Next
bcz.basecontrol.backGroundimage = bmpz


--  作者:大红袍
--  发布时间:2015/11/17 23:07:00
--  
用上面的代码,sizeChanged事件不用写代码。
--  作者:freeants
--  发布时间:2015/11/18 11:09:00
--  
用了以后,马上就不高大上了。。。
[此贴子已经被作者于2015/11/18 11:09:34编辑过]