找回密码
 立即注册

QQ登录

只需一步,快速开始

graper

高级会员

45

主题

63

帖子

1348

积分

高级会员

积分
1348

活字格认证

graper
高级会员   /  发表于:2009-12-11 15:20  /   查看:7764  /  回复:0
Post by "rickey ", 08-24-2007, 9:17
-----------------------------------------------------


我知道用System.Windows.Forms.ComboBoxRender.DrawTextBox()可以绘制出一个TextBox的效果,但我只需要边框就OK了,不知道哪位大虾支点招?

另外,使用 System.Windows.Forms.VisualStyles.VisualStyleRenderer.DrawEdge()是否可以?


Reply by "J2.NETe", 08-24-2007, 9:37
-----------------------------------------------------

自己用线拼~~~ControlPaint

如果要画CheckBox或者RadioButton可以用字符拼~~那些字符在“Marlett”字体中~~

may you bask in the glory of light.


Reply by "ted", 08-24-2007, 9:59
-----------------------------------------------------

不知楼主所讲的“类似VS2005中TextBox的边框效果”指的是下面的那一种边框, 或者别的样子:

1 means highlight effect, 2 is normal border, and 3 is vista text box border.




Reply by "rickey", 08-27-2007, 9:16
-----------------------------------------------------

类似于楼上的第3种框架.

但是使用ComboBoxRender.DrawTextbox()绘制的时候,不仅绘制了边框,还填充了TextBox;而我只想要绘制边框就可以了;

找了两天,还是没找到合适的接口,郁闷...


Reply by "ted", 08-27-2007, 10:28
-----------------------------------------------------

  1. public class MyControl : Control
  2.     {
  3.         protected override void OnPaint(PaintEventArgs e)
  4.         {
  5.             base.OnPaint(e);

  6.             if (VisualStyleRenderer.IsSupported)
  7.             {
  8.                 VisualStyleRenderer render = new VisualStyleRenderer(VisualStyleElement.TextBox.TextEdit.Normal);
  9.                 render.DrawBackground(e.Graphics, new Rectangle(10, 10, 50, 50));
  10.             }

  11.             ControlPaint.DrawVisualStyleBorder(e.Graphics, new Rectangle(70, 70, 50, 50));
  12.         }
  13.     }
复制代码
Please have a try, and seems the second method is proper for you.

Reply by "rickey", 08-27-2007, 20:54
-----------------------------------------------------

问题已经解决,非常感谢TED的热心帮助。

顺便问一下,ControlPaint.DrawVisualStyleBorder()方法是3.0中新增的方法吗?

Reply by "lalac",  08-30-2007, 9:41
-----------------------------------------------------



ControlPaint.DrawVisualStyleBorder() 是DotNET2.0提供的新方法。

  1. // Refector from System.Windows.Forms.dll

  2. public static void DrawVisualStyleBorder(Graphics graphics, Rectangle bounds)
  3. {
  4.     if (graphics == null)
  5.     {
  6.         throw new ArgumentNullException("graphics");
  7.     }
  8.     using (Pen pen = new Pen(VisualStyleInformation.TextControlBorder))
  9.     {
  10.         graphics.DrawRectangle(pen, bounds);
  11.     }
  12. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部