我做了它继承的TextBox控件,而我试图给笔记本格:绘制画笔
我已经将指定代码在哪里画线,包括所有的网格功能,但我不知道该怎么绘制它。 我搜索了很多,并寻找一个画笔,让我有一个DrawingContext相同的接口(所以我可以调用drawingContext.DrawLine()等),或熟悉的东西,但我找不到任何!
那么我怎样才能获得我的网格背景?
P.S我不能创建一个静态的bmp文件并加载它,因为网格颜色和间距将肯定改变
我做了它继承的TextBox控件,而我试图给笔记本格:绘制画笔
我已经将指定代码在哪里画线,包括所有的网格功能,但我不知道该怎么绘制它。 我搜索了很多,并寻找一个画笔,让我有一个DrawingContext相同的接口(所以我可以调用drawingContext.DrawLine()等),或熟悉的东西,但我找不到任何!
那么我怎样才能获得我的网格背景?
P.S我不能创建一个静态的bmp文件并加载它,因为网格颜色和间距将肯定改变
你可以尝试使用DrawingVisual
让你DrawingContext
然后创建一个VisualBrush
到屁股点到你的Background
。像这样的东西。
DrawingVisual dv = new DrawingVisual();
DrawingContext dc = dv.RenderOpen();
dc.DrawLine(new Pen(Brushes.Red,5),new Point(0,0),new Point(50,50));
dc.Close();
VisualBrush vb = new VisualBrush(dv);
textBox1.Background = vb;
可以拦截Paint
事件的控制。您会得到一个PaintEventArgs
参数,其中包括ClipRectangle
和Graphics
对象。
一旦你有你的Graphics
对象,你可以直接调用DrawLine
和FillRectangle
。
谢谢,但我的程序使用WPF,但WinForms。 – MasterMastic
这是我的理解,你仍然在你的控件中得到一个绘画事件。不过,我可能是错的。 –
你正在寻找一个自定义绘制的控件。您需要重写控件类的OnPaint方法并在该方法中绘制背景。下面是关于如何做到这一点的例子:http://msdn.microsoft.com/en-us/library/b818z6z6(v=vs.90).aspx
为了吸引你的背景,抓住绘图上下文和后第一个调用基OnPaint方法绘制你的背景:
protected override void OnPaint(PaintEventArgs pe)
{
// Call the OnPaint method of the base class.
base.OnPaint(pe);
// Declare and instantiate a new pen.
System.Drawing.Pen myPen = new System.Drawing.Pen(Color.Aqua);
// Draw an aqua rectangle in the rectangle represented by the control.
pe.Graphics.DrawRectangle(myPen, new Rectangle(this.Location, this.Size));
}
编辑: 既然你”重新使用WPF,你可以看看这里看到定制设计一个完整的例子:WPF .NET 3.5 Drawing Customized Controls and Custom UI Elements
完美!谢谢。 – MasterMastic
@Ken不客气,很高兴有人帮助 –