画到画笔

时间:2012-09-29 14:21:49

标签: c# wpf

我已经制作了一个继承TextBox的控件,我正试图给出一个笔记本网格:

Notebook page

我已经有了代码,它将指定绘制线条的位置,包括所有网格功能,但我不确定要绘制它的内容。 我已经搜索了很多并搜索了一个画笔,它将让我拥有与DrawingContext相同的界面(所以我可以调用drawingContext.DrawLine()等),或熟悉的东西,但我找不到任何东西!

那么我怎样才能获得网格背景?

P.S我无法创建静态bmp文件并加载它,因为网格颜色和间距肯定会改变

3 个答案:

答案 0 :(得分:1)

您可以尝试使用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;

答案 1 :(得分:0)

您可以截取Paint事件作为您的控件。您会得到一个PaintEventArgs参数,其中包含ClipRectangleGraphics个对象。

查看Control.Paint Event

获得Graphics个对象后,您可以直接在其上调用DrawLineFillRectangle

答案 2 :(得分:0)

您正在寻找自定义绘制的控件。您将要覆盖控件类的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