GDI: drawline怎么划线在屏幕最前方(实现在panel的范围内画一条线,panel上有若干控件了label,textbox等等)?

kingmax54212008 2012-05-27 10:17:54
GDI: drawline怎么划线在屏幕最前方(实现在panel的范围内画一条线,panel上有若干控件了label,textbox等等)?

我想在panel的范围内画一条线,结果是其在panel之上,而在label,textbox之下。

我是想把划线在屏幕最前方,即所有控件之上,包括label,textbox。



现在的code是:


Graphics g = panel1.CreateGraphics();
g.Clear(Color.LightGray);
int axisLine = 9 ;
g.DrawLine(Pens.Red, axisLine, 0 - 100, axisLine, gbLessonsbox.Height + 100);

请大家给与指教~~~~
...全文
166 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
baiwenyu 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
to baiwenyu,libinguest,

划线的位置不固定, 我这里的axisLine是个变量,动态变化的。
[/Quote]
label 你也可以动态设置属性 top left 值啊,把它的宽度设置为1,也不会盖住其它控件
熙风 2012-05-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

to libinguest,

panel上放控件了,如果使用:
panel1.BringToFront(); //将控件放到所有控件最前端
panel1.SendToBack(); //将控件放到所有控件最低端


这样,前面的label,textbox就看不见了。我只是想划线划在最前面。其它控件位置均不变。
[/Quote]

将panel设置为透明
kingmax54212008 2012-05-28
  • 打赏
  • 举报
回复
to libinguest,

panel上放控件了,如果使用:
panel1.BringToFront(); //将控件放到所有控件最前端
panel1.SendToBack(); //将控件放到所有控件最低端


这样,前面的label,textbox就看不见了。我只是想划线划在最前面。其它控件位置均不变。
kingmax54212008 2012-05-28
  • 打赏
  • 举报
回复
to baiwenyu,libinguest,

划线的位置不固定, 我这里的axisLine是个变量,动态变化的。
风之影子 2012-05-28
  • 打赏
  • 举报
回复
如果你画线的位置确定的话,就用1楼说的也可以。

如不确定,可以动态的在panel内再加一个宽高为你画线宽高的panel,设置其背景为线的色,最后把控件发送到最上方


button1.BringToFront(); //将控件放到所有控件最前端
button1.SendToBack(); //将控件放到所有控件最低端


bdmh 2012-05-28
  • 打赏
  • 举报
回复
如果当前位置有其他组件,你花不到最上方,你把其他控件让出一个像素就行了,或者你直接取得屏幕的DC,然后在屏幕上画
baiwenyu 2012-05-28
  • 打赏
  • 举报
回复
楼主啊,这个可难可难了,即使用api ,不过那样感觉又是大材小用啊。如果你只是想画个线而已,可以用个Label控件,加在panel上,设置宽度为1,背景色为红,这样就是一个直线,你只在代码中控制它的长度、位置、是否显示 ,就行了。
kingmax54212008 2012-05-28
  • 打赏
  • 举报
回复

几经研究,panel是无法设置为透明的。

http://topic.csdn.net/u/20080920/00/B809A57E-F184-4880-997E-A63DF1DC36A9.html



继续找本命题的,答案。各路高人给看一下~~~~

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧