1

TextBox を継承するコントロールを作成し、ノートブック グリッドを提供しようとしています。

ノートブック ページ

すべてのグリッド機能を含む線をどこに描画するかを指定するコードは既にありますが、何に描画すればよいかわかりません。私はたくさんグーグルで検索し、DrawingContext と同じインターフェイスを持つことができるブラシ (つまり、drawingContext.DrawLine() などを呼び出すことができます)、またはなじみのあるものを探しましたが、何も見つかりませんでした!

では、グリッドの背景を取得するにはどうすればよいですか?

PS静的bmpファイルを作成してロードすることはできません。グリッドの色と間隔が確実に変わるためです

4

3 に答える 3

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;
于 2012-09-29T15:09:55.903 に答える
0

Paintあなたはあなたのコントロールのためにイベントを傍受することができます。とオブジェクトPaintEventArgsを含む引数を取得します。ClipRectangleGraphics

Control.Paintイベントを確認してください。

オブジェクトを取得したら、直接Graphics呼び出すことができます。DrawLineFillRectangle

于 2012-09-29T14:29:26.667 に答える
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.NET3.5カスタマイズされたコントロールとカスタムUI要素の描画

于 2012-09-29T14:30:39.950 に答える